2012-12-03 28 views
5

私はDjango 1.4を使用しています。 404.htmlと同じディレクトリに403.htmlファイルを作成しました(404エラーページは正常に動作します)。はい、私はthisを読んでいます。その後、私は私のブラウザでクッキーをオフにし、ない鉱山403.htmlページにログインし、デフォルトの403エラーページを参照してみてください: ジャンゴの403ページ

Forbidden (403) 
CSRF verification failed. Request aborted. 
More information is available with DEBUG=True. 

は、私は、Apacheを再起動しますが、それは助けをdoesntの。

修正方法?ありがとう

答えて

8

これはデフォルトの403エラーページではありません。 Cookieが無効になっているときにCSRF middlewareが機能しないため、このメッセージが表示されます。

CSRFミドルウェアは一般的な403ビューを使用せず、CSRF_FAILURE_VIEWという設定で定義されたビュー(is defined in django.conf.global_settings)がdjango.views.csrf.csrf_failureであるため、カスタム403テンプレートは効果がありません。 in the sourceのように、表示されているメッセージはビューにハードコードされています。

独自のCSRF_FAILURE_VIEWを作成することもできますが、それはおそらくあなたが望むものではありません。すべてをそのまま残し、クッキーを削除するか、認証されていないユーザーとしてテストするために別のブラウザを使用することをお勧めします。

+0

私は、ユーザーが無効になっている孤独に行き、彼が私のページ403を表示した場合、状況を提供したいだけです。つまり、[ソース](https://github.com/django)を変更する必要があります。 /django/blob/1.4.2/django/views/csrf.py)? – tim

+2

Djangoソースを変更しないでください!新しいビューを作成し、設定でCSRF_FAILURE_VIEWを設定します。または、Cookieが有効になっている場合にJavaScriptをチェックインしてログインを無効にすることもできます。 –