Saw*_*wwy 37 django checkbox login remember-me
我怎样才能重新使用原来的管理员登录()和AuthenticationForm设置较长的Cookie有效期与"记住我"选项,在登录页面检查用户?我目前正在通过urls.py使用内置登录
url(r'^login/$','django.contrib.auth.views.login', {'template_name': 'authentication/login.html'}, name='login'),
Run Code Online (Sandbox Code Playgroud)
该复选框在我的login.html中实现为:
<label><input name="remember_me" type="checkbox">Keep me logged in</label>
Run Code Online (Sandbox Code Playgroud)
但我不知道如何通过AuthenticationForm传递信息给django.contrib.auth.views.login
目前,如果用户未选中"记住我"框,则会在settings.py中定义cookie年龄
SESSION_COOKIE_AGE = 360
Run Code Online (Sandbox Code Playgroud)
我发现了几个类似的问题,但我认为这不需要安装单独的应用程序.下面的代码片段(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)
Run Code Online (Sandbox Code Playgroud)
tar*_*ueh 18
django会话cookie年龄以秒为单位定义.
SESSION_COOKIE_AGE = 360
Run Code Online (Sandbox Code Playgroud)
表示会话将在6分钟后过期.我最近实现了"记住我"功能,并设置了以下内容:
SESSION_COOKIE_AGE = 60 * 60 * 24 * 30 # One month
Run Code Online (Sandbox Code Playgroud)
登录视图需要覆盖,因为您已在代码段中显示.
但听起来你有一个奇怪的问题,关闭浏览器(当记住我未选中时)不需要用户重新登录,如果你使用set_expiry(0)不应该发生.当你使用set_expiry(0)时,django设置一个'session'长度cookie而不是固定长度的cookie,并且按照设计它会在浏览器关闭后过期.
还有另一个设置会影响浏览器关闭时清除cookie.也许您可以尝试更改SESSION_EXPIRE_AT_BROWSER_CLOSE设置的值或检查配置中的现有值.https://docs.djangoproject.com/en/1.10/topics/http/sessions/#browser-length-sessions-vs-persistent-sessions
| 归档时间: |
|
| 查看次数: |
21676 次 |
| 最近记录: |