2017-02-28 10 views
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> 
+0

[禁止(403)CSRFの検証に失敗した可能性があります。リクエストが中止されました。 {%csrf \ _token%}]を使用しても(@stackoverflow.com/questions/20895526/forbidden-403-csrf-verification-failed-request-aborted-even-using-the-csr) –

+0

@AriGoldいいえそうでなければ、すべて正しく設定されています。そうでなければ、私は開発モードと自分のコンピュータのエラーを表示します。 – Lindow

+1

すべてが正しく設定されていると、その他のPCに問題があるようです...テストする別のPCがありますか? – Jingo

答えて

0

私はISSを解決しましたエラーがコンソール上にありませんでしたので、私のcsrfチェック理由は働いていなかった私を見つけることができませんでした

:このチュートリアルに従うことによって、ジャンゴと、ログインして構築されたを使用して、UEトークンは{{ csrf_token }}を使用してうまく表示されていました。

関連する問題