[解決済み] CSRF 検証に失敗しました。リクエストは中断されました。
2022-02-19 21:55:32
質問
Django 1.3 Web Development を使っているのですが、ログイン時に以下のエラーが発生します。
Forbidden (403)
CSRF verification failed. Request aborted.
Help
Reason given for failure:
CSRF token missing or incorrect.
これは私のsettings.py Included APPSです。この本に書いてあるとおりになっています。
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'djangocricket.Cricket',
'djangocricket.cms'
)
本には、django.contrib.auth.views.login を含めるべきだと書かれていますが、私はそれを含めています。
urlpatterns = patterns('',
# Examples:
url(r'^$', 'djangocricket.Cricket.views.index', name='default'),
url(r'^user/(\w+)/$', 'djangocricket.Cricket.views.user_home', name='user home'),
url(r'^login/$', 'django.contrib.auth.views.login'),
# url(r'^djangocricket/', include('djangocricket.foo.urls')),
# Uncomment the admin/doc line below to enable admin documentation:
#url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
url(r'^news/', 'djangocricket.cms.views.index', name='index'),
#url(r'^news/(?P<slug>[^\.]+).html', 'djangocricket.cms.views.detail', name='get_single_news_item'),
url(r'^admin/', include(admin.site.urls)),
)
と私の登録/ログイン.html ... 本からコピーペーストしたものです。
<html>
<head>
<title>Django Bookmarks - User Login</title>
</head>
<h1>User Login</h1>
{% if form.errors %}
<p>Your username and password didn't match.
Please try again.</p>
{% endif %}
<form method="post" action=".">
<p><label for="id_username">Username:</label>
{{ form.username }}</p>
<p><label for="id_password">Password:</label>
{{ form.password }}</p>
<input type="hidden" name="next" value="/" />
<input type="submit" value="login" />
</form>
</body>
</html>
何が足りないのでしょうか?
解決方法は?
を追加する必要があります。
{% csrf_token %}
テンプレートタグの子として
form
要素を Django テンプレートに追加します。
この方法で、テンプレートはCSRFトークンに値が設定されたhidden要素をレンダリングします。Django サーバがフォームリクエストを受信すると、 Django はトークンがフォームでレンダリングされた値と一致するかどうかを検証します。これは、POST リクエスト (つまり、データを変更するリクエスト) が認証されたクライアントセッションから発信されていることを確認するために必要です。
詳しくは、以下のDjangoのドキュメントをご覧ください。 https://docs.djangoproject.com/en/dev/ref/csrf/
クロスサイトリクエストフォージェリ攻撃の概要について説明します。 https://www.owasp.org/index.php/CSRF
関連
-
[解決済み】Django: そのようなテーブルがない: django_session
-
[解決済み] Django ランサーバー使用時にデータを印刷する方法
-
[解決済み] CSRFに失敗しました。CSRFトークンがないか不正確です
-
MultiValueDictKeyError at/add/ エラー解決
-
djangoでログ出力を利用する
-
Djangoデータベースのクエリセット操作
-
django のデータモデルで on_delete を使用する
-
[解決済み] ユーザー認証の方法
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み】djangoのフォームフィールドでデフォルトで空のクエリセットを作成する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ImportError: 'django.utils' から名前 'six' をインポートできません。
-
[解決済み] djangoでDISTINCT個々の列を選択しますか?
-
[解決済み] django Forms のラジオボタン
-
[解決済み] "POSTMANを使った画像データの投稿"
-
MultiValueDictKeyError at/add/ エラー解決
-
[解決済み] Facebookログインとメール認証
-
[解決済み】テンプレートコード内で変数に値を設定するには?
-
[解決済み】Djangoの管理者用URLをオブジェクトに取得する
-
[解決済み】djangoでResponse Forbiddenを発生させるには?
-
[解決済み】reverse()とは何ですか?)