Django:如何在密码重置/更改后销毁用户会话?

san*_*lto 5 authentication django session

我最近在我的django项目中实现了一个简单的更改密码视图.问题是出于安全原因应该销毁旧会话.在不要求用户再次登录的情况下,这样做的最佳方法是什么.

我想我可以注销/登录他/她,如下所示:

from django.contrib.auth import login as auth_login
from django.contrib.auth import logout as auth_logout

@login_required
def change_password(request):
  # My stuff
  request.user.set_password(new_password)
  request.user.save()
  # I need this:
  logout(request)
  login(request,request.user)
Run Code Online (Sandbox Code Playgroud)

但我认为这不是最好的主意.你怎么看?

还有另一种方法吗?

我错过了什么吗?(我的意思是,这是安全的)

Tim*_*ony 1

django 在注销时清除会话,这样你就可以了:

https://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.logout

当您调用 logout() 时,当前请求的会话数据将被完全清除。所有现有数据都将被删除。这是为了防止其他人使用同一 Web 浏览器登录并访问先前用户的会话数据。

  • 我不想注销我的用户。 (2认同)