django 账号登陆踢人(中间件)

这篇博客介绍了如何在Django 1.11版本中利用中间件和缓存机制来实现在用户登录时将其他账号踢出系统的方法。登录信息被保存在Django缓存系统中,而session则存储在MySQL数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

django使用1.9之前版本 1.11中间件使用的装饰器(闭包)的形式,登陆信息保存在django缓存中,session保存在MySQL数据库

# coding=utf-8
from django.core.cache import cache
from django.contrib.sessions.models import Session


class OnlyOne_User_Login(object):
    def process_request(self, request):
        user_id = request.user.id
        session_key = request.session.session_key
        delete_session(user_id, session_key)
        return None

    def process_response(self, request, response):
        user_id = request.user.id
        session_key = request.session.session_key
        res = set_cache(user_id, session_key)
        return response


def delete_session(user_id, session_key):
    """
    删除原来登陆用户的session
    :param user_id:
    :param session_key:
    :return:
    """
    if user_id is None:
        return
    cache_session_key = cache.get(user_id)
    if cache_session_key == session_key or cache_session_key is None:
        return
    session = Session.objects.filt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值