在 Django 中,我可以使用以下命令注销用户:from django.contrib.auth import logout
logout(request)但是,我将如何手动注销使用 - 例如,我想“将用户从所有选项卡中注销” - 也就是说,如何在我的数据库中刷新该用户的所有会话?
3 回答
万千封印
TA贡献1891条经验 获得超3个赞
您可以遍历数据库中的所有会话,解码所有会话,并删除属于该用户的会话。但它很慢,特别是如果您的网站流量很高并且有很多会话。
如果您需要更快的解决方案,您可以使用会话后端来查询和获取特定用户的会话。在这些会话后端中,Session 有一个指向 User 的外键,因此您不需要遍历所有会话对象:
Django的qsessions(基于Django的
db
,cached_db
会话后端)django-user-sessions(基于 django 的
db
会话后端)
使用这些后端,可以在一行代码中删除用户的所有会话:
user.session_set.all().delete()
免责声明:我是django-qsessions
.
添加回答
举报
0/150
提交
取消