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
我想为未经身份验证的用户限制所有页面。我写了以下中间件:
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