0

このチュートリアルを使用して、django ログイン アプリケーションの作成を試みています (非常に単純なもの...)。

これは、テンプレートの最終的なコードです ( index.html)

<div id="login-box">
            {{ state }}
            <form class="login-widgets" action="/login/" method="post">
                {% if next %}
                <input class="login-widgets-text" type="hidden" name="next" value="{{ next }}" />
                {% endif %}
                Username :
                <input class="login-widgets-text" type="text" name="username" value="{{ username}}" /><br />
                Password :
                <input type="password" name="password" value="" /><br />
                <input class="login-button" type="submit" value="Log In" />
            </form>
            <!--<div class="login-widgets">
                <p>Username : ___________</p>
                <p>Password : ___________</p>
            </div>-->
      </div>

そして、これはチュートリアルが私のアプリviews.pyページに追加するように私に言ったものです:

def login_user(request):
    state = "Please log in below..."
    username = password = ''
    if request.POST:
        username = request.POST.get('username')
        password = request.POST.get('password')

        user = authenticate(username=username, password=password)
        if user is not None:
            if user.is_active:
                login(request, user)
                state = "You're successfully logged in!"
            else:
                state = "Your account is not active, please contact the site admin."
        else:
            state = "Your username and/or password were incorrect."

    return render_to_response('index.html',{'state':state, 'username': username})

チュートリアルとdjangoのドキュメントで説明されているとおりにテストデータベースをセットアップしましたが、それでも私のログインはブラウザでこのエラーを受け取り続けます:

Forbidden (403)
CSRF verification failed. Request aborted.

CSRF検証が何を意味するのかわかりません-私settings.pyはMIDDLEWARE_CLASSESを次のように設定しました:

MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django. contrib.messages.middleware.MessageMiddleware', # 簡単なクリックジャック保護のために次の行のコメントを外します: # 'django.middleware.clickjacking.XFrameOptionsMiddleware', )

しかし、CSRF を検証してログインを認証する方法がわかりません。私の知る限り、データベースのスーパー ユーザーと上記のコードは正しいように見えますが、CSRF 検証を追加する方法がわかりません。手伝ってくれてどうもありがとう!

4

1 に答える 1

2

フォーム内に追加{% csrf_token %}します。キー付きの非表示の入力に置き換えられます。

ステップバイステップのドキュメント

コンセプト説明

于 2013-07-23T22:10:37.830 に答える