![](/img/trans.png)
[英]ERR_TOO_MANY_REDIRECTS in redirect with middleware in Django
[英]Redirect to login page with middleware is causing 'too many redirects" issue
我想要的是將用戶重定向到登錄頁面,如果他們沒有經過身份驗證。 我做了一個中間件,但重定向不起作用。 有人可以幫我嗎?
我的網址:
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('contas/', include('django.contrib.auth.urls'), name='login'), # I want call this
path('', include('apps.props.urls'))
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
我的中間件.py
from django.http import HttpResponseRedirect
from django.urls import reverse
class AuthRequiredMiddleware(object):
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
if not request.user.is_authenticated:
return HttpResponseRedirect(reverse('login')) # Here I call login
response = self.get_response(request)
return response
最后,我的 settings.py
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'middleware.AuthRequiredMiddleware', # Registering middleware
]
我得到的是這個頁面“重定向太多”
我的日志:
比@Melvyn 和@Onsem 評論我已經改進了我的代碼。 這是一種解決方案(我們只需要小心媒體文件夾中的文件,它們是作為匿名用戶訪問的):
from django.http import HttpResponseRedirect
from django.urls import reverse
class AuthRequiredMiddleware(object):
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
# Here I call login if not authenticated and request is not login page
if not request.user.is_authenticated and request.path != reverse('login'):
return HttpResponseRedirect(reverse('login'))
response = self.get_response(request)
return response
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.