元のadmin login()とAuthenticationFormを再利用して、ログインページで「remember me」オプションをチェックしたユーザーのCookieの長さを長く設定するにはどうすればよいですか?私は現在を通じて内蔵のログインを使用していますurls.pyDjangoログインビューと認証フォームが組み込まれた「Remember Me」
url(r'^login/$','django.contrib.auth.views.login', {'template_name': 'authentication/login.html'}, name='login'),
チェックボックスのように私のlogin.htmlとで実装されています
<label><input name="remember_me" type="checkbox">Keep me logged in</label>
が、私はを通じてその情報を渡す方法を確認していませんユーザーがログインするには、「私を覚えている」場合
現在django.contrib.auth.views.loginにAuthenticationFormは、未チェックボックスは、クッキーの年齢はsettings.py
SESSION_COOKIE_AGE = 360
01で定義されています
似たような質問がいくつか見つかりましたが、別のアプリをインストールする必要はありません。以下のスニペット(http://djangosnippets.org/snippets/1881/)は有望に見えたが、私は数ヶ月のカップルのためのpythonとDjangoをコード化していると私はそれを動作させることができませんでした:
def login(request, *args, **kwargs):
if request.method == 'POST':
if not request.POST.get('remember_me', None):
request.session.set_expiry(0)
return auth_views.login(request, *args, **kwargs)
スニペットは実際には別の方法で動作しますが、主な考え方はまだチェックボックスの選択に基づいてクッキーの有効期限を設定することです。 – Sawwy
スニペットは正しいです。ちょうど覚えておいたログインの期限まで 'SESSION_COOKIE_AGE'を設定し、一回限りのログインの満了まで' request.session.set_expiry(0) 'の中に' 0'を設定してください。 – okm
これで、デフォルトのセッション長が5秒でセッションが30秒であることを覚えています。ただし、set_expiry(0)を使用すると、ブラウザを閉じるときにセッションが削除されません(タブではなくブラウザ全体を閉じる)。この問題は、1)FROM django_sessionを削除する(データベースからすべてのセッション情報を削除する)2)すべてのブラウザ履歴を消去する(Chrome 25.0.1364.97)。私は最初から始めますが、これはユーザーがログインしている間はログインしたままになります。何か他に必要なことはありますか? – Sawwy