Django 中间件登录检查

Django Middleware Login check

我想为未经身份验证的用户限制所有页面。我写了以下中间件:

from django.shortcuts import redirect


def require_login(get_response):

    def middleware(request):
        if request.user.is_authenticated:
            response = get_response(request)
            return response

        return redirect('/login/')

    return middleware

问题是它在重定向到登录页面时也会重定向到我的登录页面(希望你明白了)。所以它不断地重定向到我的登录页面。我需要做什么?是否可以检查请求的页面是否为登录页面然后不检查上面的 if 语句。谢谢!

检查 request.path,如果它等于您的登录 URL 那么 return 常规响应

from django.shortcuts import redirect


def require_login(get_response):

    def middleware(request):
        if request.user.is_authenticated or request.path == '/login/':
            response = get_response(request)
            return response

        return redirect('/login/')

    return middleware