Django отзывает сессионный ключ, если вы вошли в систему с другого устройства / браузера - PullRequest
0 голосов
/ 26 мая 2019

Я хочу отменить старый сеанс, как только пользователь войдет в систему с другого устройства, но если я использую здесь сброс сеанса, я выйду из всех браузеров.У кого-то есть решение для этого:

middleware.py

from django.contrib.sessions.models import Session
# Session model stores the session data
from .models import LoggedInUser


class OneSessionPerUserMiddleware:
    # Called only once when the web server starts
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        if request.user.is_authenticated:
            session_key = request.session.session_key
            try:
                logged_in_user = request.user.logged_in_user
                stored_session_key = logged_in_user.session_key
                if stored_session_key != session_key:
                    Session.objects.filter(session_key=stored_session_key).delete()
                logged_in_user.session_key = session_key
                logged_in_user.save()
            except LoggedInUser.DoesNotExist:
                LoggedInUser.objects.create(user=request.user, session_key=session_key)
        response = self.get_response(request)
        return response
...