在302中重定向到/ admin / login /结果

时间:2017-01-24 20:13:49

标签: django

我正在尝试在未对用户进行身份验证时重定向到登录页面。在我的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结果。

2 个答案:

答案 0 :(得分:1)

如果这是您的整个代码,那么您总是在重定向循环中结束。

  1. 用户未登录并转到/
  2. 用户被重定向到/admin/login,因为应该有一个登录表单
  3. 用户登陆/admin/login但仍未登录,被重定向到/admin/login
  4. 无限期地重复步骤
  5. 所以/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 =正确

这对我有用。