0

まず最初に、私はいくつかのSOの答え(これこれ)に従ったと言わなければなりませんが、私は自分の問題を解決していません。

さて、私はdjango.contrib.auth.views.logindjango-registrationを介して(正しく機能する)を使用しnext="/home_page/"ており、ログインフォームでパラメータを設定しました。に関連付けられたビュー/home_page/は実行され、その戻り値は次のようになります。

return render_to_response('myapp/shop_list.html', 
                        {'shop': entry_list,},
                        context_instance=RequestContext(request))

ログインとこ​​のビューの間に他のテンプレートをレンダリングしませんでしたが、デバッグ中に、このリターンの前Userにがリクエストに含まれていないことに気付いたため、テンプレートはを受け取り、 FalseAnonymousUseruser.is_authenticated()返します

ユーザーはDDBBにいて、パスワードは正しいです。この時点でログに記録されたユーザーを取得するにはどうすればよいですか?

これが役立つかもしれない私のアプリに関するいくつかの情報です:

settings.py
===========

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',
)

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
    'django.core.context_processors.media',
    'django.contrib.messages.context_processors.messages',
    'django.core.context_processors.request',
)

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'myapp',
    'registration',
    'django.contrib.admin',
)

login.html
==========

{% block maincontent %}
<form method="post" action="">{% csrf_token %}
    {{form.as_p}}
    <input name="next" type="hidden" value="/home_page/" />
    <input type="submit" value="Login">
</form>
{% endblock %}

link to login
=============

<a href="{% url django.contrib.auth.views.login %}">Login</a>
4

2 に答える 2

2

本当に、そのようなことを引き起こす可能性のある唯一のことは、ブラウザで Cookie が有効になっていないか、そうでなければ Cookie が保存されていないことです。

ログインすると、セッションが作成され、ログインしたユーザーがセッションに追加され、セッション Cookie がクライアント (ブラウザー) に配信されます。次のリクエストで、ブラウザは Cookie をサーバーに送り返します。サーバーはそれを使用して、一致するセッションをデータベースから引き出し、request.userログインしたユーザーを入力します (もちろん、ここでは簡単に説明します)。

したがって、 が になる唯一の方法は、request.userログインAnonymousUserしていないか、Cookie をサーバーに送信していないかのいずれかです。

ブラウザの設定と実行中の拡張機能をチェックして、Cookie を妨害するものがないことを確認してください。別のブラウザーを試して、動作が再現可能かどうかを確認してください。

于 2012-03-06T15:36:52.823 に答える
0

問題は、別の目的で認証バックエンドを作成したことで、認証方法がそこにありませんでした。

于 2012-03-07T16:25:43.357 に答える