如何解决在用户完成授权之前,如何将用户重定向到登录页面?
我找到了这样一段代码,但我不明白它是如何工作的。如果您在未执行授权的情况下设置了另一个页面的路径 - 此页面将打开。
@login_required
def my_view(login_url='/'):
return HttpResponseRedirect('/config')
我需要你的帮助。
(如何进行授权)
class LoginView(View):
def get(self,request,*args,**kwargs):
form = LoginForm(request.POST or None)
context = {
'form': form
}
return render(request,'manager/login.html',context)
def post(self,**kwargs):
form = LoginForm(request.POST or None)
context = {
'form': form
}
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = authenticate(username=username,password=password)
if user:
login(request,user)
return HttpResponseRedirect('/config')
return render(request,context)
解决方法
您想将所有未经身份验证的用户重定向到您的登录页面,直到他们登录吗?
我认为使用 MiddleWares 是处理此问题的最佳方式,因为您希望在所有视图上执行此操作。
from django.http import HttpResponseRedirect
from django.urls import reverse
class AuthRequiredMiddleware(object):
def process_request(self,request):
if not request.user.is_authenticated():
return HttpResponseRedirect(reverse('login')) # Your login page url
return None
并且在您的 settings.py 中,您需要添加您的中间件:
MIDDLEWARE_CLASSES = (
...
'path.to.your.AuthRequiredMiddleware',)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。