django,如何删除每个用户的所有会话

问题描述 投票:0回答:1

我在settings.py中有以下配置

    MIDDLEWARE = [
        'django.contrib.sessions.middleware.SessionMiddleware',
    ]
    SESSION_ENGINE = "django.contrib.sessions.backends.cache"

因此,我们使用缓存进行会话管理,而不是数据库。 已经存在从数据库删除的解决方案在 Django 中删除特定用户的所有会话的最优化方法?

但是如果session是缓存的,我们有没有一个好的方法可以通过用户名删除用户session呢?

提前致谢。

我没有找到根据用户名查找会话详细信息的正确方法,从django代码中,我看到缓存密钥是基于一些随机密钥创建的,因此没有键入用户名,所以不确定如何实现这一点?

django session-cookies python-3.8
1个回答
0
投票
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)
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.