1
私はpythonanywhereで自分のサイトを公開しています。ユーザーのために簡単なログインがあります。ユーザーを作成して自分のコンピュータで認証すると動作しますが、別のマシンで認証するとDjangoサイトの他のコンピュータから認証できないのはなぜですか?
禁止(403) - CSRF検証に失敗しました。リクエストが中止されました。
私のサイトはドメイン名で公開されています。他のものはうまくいきます。何が問題なの?
私は自分のコンピュータでログインすることができるので、正しいミドルウェア、コンテキスト、csrfによる保護がすべて正しく設定されています。コードと
更新:
MIDDLEWARE_CLASSES = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
login.py
def login(request):
context = {}
if request.method == "POST":
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
auth_login(request, user)
return redirect('login')
else:
context['error'] = 'L\'utilisateur a été désactivé'
else:
context['error'] = 'Mauvais nom d\'utilisateur ou mot de passe'
return render(request, 'user.html', context)
user.html
<form method="post" action="{% url 'login' %}">
{% csrf_token %}
<p>Nom :<input type="text" class="form-control" name="username"></p>
<p>Mot de passe:<input type="password" class="form-control" name="password"></p>
<input class="submit btn btn-success pull-right" value="Se connecter" type="submit">
</form>
[禁止(403)CSRFの検証に失敗した可能性があります。リクエストが中止されました。 {%csrf \ _token%}]を使用しても(@stackoverflow.com/questions/20895526/forbidden-403-csrf-verification-failed-request-aborted-even-using-the-csr) –
@AriGoldいいえそうでなければ、すべて正しく設定されています。そうでなければ、私は開発モードと自分のコンピュータのエラーを表示します。 – Lindow
すべてが正しく設定されていると、その他のPCに問題があるようです...テストする別のPCがありますか? – Jingo