我在settings.py中有以下配置
MIDDLEWARE = [
'django.contrib.sessions.middleware.SessionMiddleware',
]
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
因此,我们使用缓存进行会话管理,而不是数据库。 已经存在从数据库删除的解决方案在 Django 中删除特定用户的所有会话的最优化方法?
但是如果session是缓存的,我们有没有一个好的方法可以通过用户名删除用户session呢?
提前致谢。
我没有找到根据用户名查找会话详细信息的正确方法,从django代码中,我看到缓存密钥是基于一些随机密钥创建的,因此没有键入用户名,所以不确定如何实现这一点?
from django.contrib.sessions.models import Session
from django.contrib.auth.models import User
# Replace 'username' with the actual username or another identifier of the user.
user_to_delete_sessions_for = User.objects.get(username='username')
# Get the sessions associated with the user.
sessions = Session.objects.filter(session_key__contains=str(user_to_delete_sessions_for.id))
# Delete the sessions.
sessions.delete()
然后您应该注销用户
from django.contrib.auth import logout
logout(request)