gpt4 book ai didi

django - 如何查找特定用户的 Django session ?

转载 作者:行者123 更新时间:2023-11-28 19:34:11 24 4
gpt4 key购买 nike

我正在编写一个应用程序,我将从 Django 和一个独立的应用程序访问数据库。两者都需要进行 session 验证,并且两者的 session 应该相同。 Django 有一个内置的身份验证/ session 验证,这正是我正在使用的,现在我需要弄清楚如何为我的独立应用程序重用相同的 session 。

我的问题是如何查找特定用户的 session_key?

从表面上看,auth_user 和 django_session 没有任何关系

最佳答案

这个答案是在最初的问题出现五年后发布的,但是这个 SO 线程是谷歌搜索这个问题的解决方案时排名靠前的结果之一(而且 Django 仍然不支持开箱即用的东西).

对于您只关心登录用户 session 的用例,我有一个替代解决方案,它使用额外的 UserSession 模型将用户映射到他们的 session ,如下所示:

from django.conf import settings
from django.db import models
from django.contrib.sessions.models import Session

class UserSession(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
session = models.ForeignKey(Session)

然后您可以在用户登录时保存一个新的 UserSession 实例:

from django.contrib.auth.signals import user_logged_in

def user_logged_in_handler(sender, request, user, **kwargs):
UserSession.objects.get_or_create(user = user, session_id = request.session.session_key)

user_logged_in.connect(user_logged_in_handler)

最后,当您想列出(并可能清除)特定用户的 session 时:

from .models import UserSession

def delete_user_sessions(user):
user_sessions = UserSession.objects.filter(user = user)
for user_session in user_sessions:
user_session.session.delete()

这就是它的具体细节,如果您想了解更多细节,我有一个 blog post覆盖它。

关于django - 如何查找特定用户的 Django session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/235950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com