首页 > 解决方案 > 在 Django 的自定义 AuthenticationForm 中使用 session.set_expiry()。

问题描述

我正在尝试在登录时设置记住我并使用 LoginView 作为视图。是否可以在自定义 AuthenticationForm 中设置 session.set_expiry(0)?

class CustomAuthenticationForm(AuthenticationForm):
    username = forms.CharField();
    password = forms.CharField(),
    remember_me = forms.BooleanField(widget=forms.CheckboxInput(),
                             label='Remember me')

    def clean_remember_me(self):
      if not self.cleaned_data['remember_me']:
         set expiry immediately <-- here

SESSION_EXPIRE_AT_BROWSER_CLOSE 可能可用,但在这种情况下我可以使用 session.get_expiry(0) 吗?

不编写自定义视图怎么办?

标签: djangosessionlogin

解决方案


我认为您可以这样做,因为请求从视图传递到表单

def clean_remember_me(self):
  if not self.cleaned_data['remember_me']:
     self.request.session.set_expiry(0)
  ...

推荐阅读