社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

django如何在一个浏览器中同时登录多个用户,避免session覆盖?

3040284313 • 4 年前 • 889 次点击  

from django.contrib.auth import login 下面是django中的login源代码,请问怎么改才可以在一个浏览器中同时登录多个用户 默认是最新登录的用户的session会覆盖之前用户的session。(就是在django_session表中覆盖,导致之前登录的用户的session被覆盖) 如果是不同的浏览器则不会覆盖,总之同一个浏览器只能同时登录一个用户。 网上有一种方法,是把session改为列表的形式,但是完全没头绪。没办法了,求解,多谢了。

def login(request, user, backend=None):

session_auth_hash = ''
if user is None:
    user = request.user
if hasattr(user, 'get_session_auth_hash'):
    session_auth_hash = user.get_session_auth_hash()

if SESSION_KEY in request.session:
    if _get_user_session_key(request) != user.pk or (
            session_auth_hash and
            not constant_time_compare(request.session.get(HASH_SESSION_KEY, ''), session_auth_hash)):

        request.session.flush()
else:
    request.session.cycle_key()

try:
    backend = backend or user.backend
except AttributeError:
    backends = _get_backends(return_tuples=True)
    if len(backends) == 1:
        _, backend = backends[0]
    else:
        raise ValueError(
            'You have multiple authentication backends configured and '
            'therefore must provide the `backend` argument or set the '
            '`backend` attribute on the user.'
        )
else:
    if not isinstance(backend, str):
        raise TypeError('backend must be a dotted import path string (got %r).' % backend)
request.session[SESSION_KEY] = user._meta.pk.value_to_string(user)
request.session[BACKEND_SESSION_KEY] = backend
request.session[HASH_SESSION_KEY] = session_auth_hash
if hasattr(request, 'user'):
    request.user = user
rotate_token(request)
user_logged_in.send(sender=user.__class__, request=request, user=user)
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/99252
 
889 次点击