すべてのページに効果的に@login_required
を作成するミドルウェアを作成しています。残念ながら、私はリダイレクトループの結果を得ています。Django 1.10:ログインに必要なミドルウェアのリダイレクトループ
実装は、ユーザーが認証されていないときは常にログインページにリダイレクトするための試みでMiddlewareMixin
を経由して1.10とprocess_request()
フックと「古い」スタイルのミドルウェアを使用しています。
まず、デフォルトのauth URL django.contrib.auth.urls
を使用しています。 docsは言う:^login/$ [name='login']
...
# main URLConf urls.py
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('django.contrib.auth.urls')), # https://docs.djangoproject.com/en/1.10/topics/auth/default/#module-django.contrib.auth.views
]
は次にここに(はい、それはsettings.py
にMIDDLEWARE
に追加されます)ミドルウェアです:
from django.http import HttpResponseRedirect
from django.utils.deprecation import MiddlewareMixin
class LoginRequiredMiddleware(MiddlewareMixin):
def process_request(self, request):
if not request.user.is_authenticated():
return HttpResponseRedirect('/login/')
これは、次のURLパターンが含まれます
私のミドルウェアが含まれていない場合、ログインページ/機能が正常に機能します。すべてのURLのltsは
ERR_TOO_MANY_REDIRECTS
を引き起こします。私には何が欠けていますか?ありがとう。
@PrakharTrivedi私はそれを得ました。しばらくのうちに私の答えにいくつかの詳細を追加します。ありがとう。 –