django-利用session机制唯一登录

django-利用session机制唯一登录

配置连接数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '数据库名称',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '10.18.62.2',
        'PORT': '3306',
    }
}

生成session表

python manage.py makemigrations
python manage.py migrate

登录时记住保存用户登录信息

# 登录验证
def login_ver(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        '''
        # 用前端输入的用户名,密码去数据库里找到用户的信息
        user=数据库(username,password)
        '''
        # 数据库中得有一张users表
        user = list(Users.objects.filter(username=username,password=password).values())
        # 用户信息记录在session中
        request.session['user'] = user
        # 创建session,否则key为None
        if not request.session.session_key:
            request.session.create()
        # 获取session_key
            key = request.session.session_key
        # 当另一机器登录时,本机器应该被挤下即当前sessionkey失效,后登录的用户的session可用,之前的sessionkey从数据库中删除
        # 获取指定key的session_data,下面用的ORM模型去数据库中取数据
        session_data = list(DjangoSession.objects.filter(session_key=key).values_list('session_data'))[0][0]
        # 删除key不为当前key,session_data等于当前session_data的session记录,从而达到一个账号只能一台机器登录的目的
        models.DjangoSession.objects.filter(session_data=session_data).exclude(session_key=key).delete()
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值