すべてのページにログインフォームがあります。Cookieが無効になっているためにログインに失敗した場合は、Cookieを有効にするように求めるメッセージをユーザーに表示したいと思います。私はこのミドルウェアを作成しました:
class CheckCookiesEnabled(object):
def process_request(self, request):
if request.user.is_anonymous():
request.session.set_test_cookie()
return
ログインビューで、チェックしrequest.session.test_cookie_worked()
てログインした場合にのみログインします。そうでない場合は、メッセージを表示します。
if request.session.test_cookie_worked():
request.session.delete_test_cookie()
# Log in
else:
return HttpResponse(json.dumps({'errors': "Login failed (enable cookies to login)"}), mimetype = 'application/json')
問題は、request.session.test_cookie_worked()
常に真実であるように思われるということです。ブラウザでCookieが無効になっている場合でも、DjangoはテストCookieを設定できるようです。これを修正する理由と方法はありますか?または、ブラウザでCookieが有効になっているかどうかを確認するためのより良い方法はありますか?
ちなみに、私set_test_cookie()
がすべてのリクエストに応じた場合、Djangoは常に新しいCookieを設定しますか、それともまだCookieがない場合に限りますか?