您的位置:首页 > 编程语言 > Go语言

How to lookup django session for a particular user?

2017-06-23 18:05 537 查看
https://stackoverflow.com/questions/235950/how-to-lookup-django-session-for-a-particular-user

up
vote33down
vote
This answer is being posted five years after the original question, but this SO thread is one of the top Google results when searching for a solution to this problem (and it's still something that isn't supported out of the box with Django).

I've got an alternate solution for the use case where you're only concerned with logged in user sessions, which uses an additional 
UserSession
 model
to map users to their sessions, something like this:
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)


Then you can simply save a new 
UserSession
 instance
any time a user logs in:
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)


And finally when you'd like to list (and potentially clear) the sessions for a particular user:
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()


That's the nuts and bolts of it, if you'd like more detail I have a blog
post covering it.

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: