我正在尝试在未对用户进行身份验证时重定向到登录页面。在我的settings.py
课程中,我有:
MIDDLEWARE_CLASSES = [
'path.to.AuthRequiredMiddleware',
]
这是我的班级:
class AuthRequiredMiddleware(object):
def process_request(self, request):
if not request.user.is_authenticated():
return HttpResponseRedirect('/admin/login/')
return None
然而,当用户未经过身份验证时,这总是导致[24/Jan/2017 14:09:07] "GET /admin/login/ HTTP/1.1" 302 0
,是否有人知道如何解决此问题?无论是什么,更改重定向URL都会产生同样的问题。
我也尝试使用django.shortcuts import redirect
,但我也得到了相同的302
结果。
答案 0 :(得分:1)
如果这是您的整个代码,那么您总是在重定向循环中结束。
/
/admin/login
,因为应该有一个登录表单/admin/login
但仍未登录,被重定向到/admin/login
所以/admin/login
应该是一个例外,用户可以在他未登录时获取。
这样的事情:
class AuthRequiredMiddleware(object):
def process_request(self, request):
redirect_url = '/admin/login'
if not request.user.is_authenticated() and request.path != redirect_url:
return HttpResponseRedirect(redirect_url)
return None
答案 1 :(得分:0)
此外,请确保您在Settings.py文件中没有将此属性设置为True
SESSION_COOKIE_SECURE =正确
这对我有用。