zoukankan      html  css  js  c++  java
  • 单点登录

    单用户登陆

    session

    参考

    • 登录

    方法一

    从记录session的数据库中删除之前用户的的所有记录

    login(request, user) #登录成功
    # 登录之后获取获取最新的session_key
    session_key = request.session.session_key
    # 删除非当前用户session_key的记录
    for session in Session.objects.filter(~Q(session_key=session_key), expire_date__gte=timezone.now()):
        data = session.get_decoded()
        if data.get('_auth_user_id', None) == str(request.user.id):
            session.delete()
    

    方法二

    建立user扩展表,增加session_key字段记录user登录信息

    username = request.POST.get("username")
    password = request.POST.get("password")
    authenticated_user = authenticate(username=username, password=password)
    if authenticated_user:
        # 找到登录的user对象
        user_obj = UCenter.objects.filter(userid=authenticated_user) 
        # 获取登录对象的session_key
        is_session_key = user_obj.first().session_key  
        if is_session_key:  # 用户已登录
            # 删除django-session表中登录前面登录用户的session_key
            request.session.delete(is_session_key)  
        # 用户信息存入session
        auth_login(request, authenticated_user)  
        # 更新新user扩展表中登录user的session_key         
        user_obj.update(session_key=request.session.session_key)  
        return redirect('/index/')
    else:
        return redirect('/accounts/login/')
    

    若有推送机制,则在登录后,推送至旧的设备上,提示用户已经再次登录,旧登录失效。

    • 访问

    使用正常的cookie-session验证,由于session_key的唯一性,当新用户登录后,就用户就无法继续使用之前的session_key.

    JWT

    • 登录

    每个用户登录后,在redis中存储用户的jwt_token。key是user_id,value是用户最新的token

    当新用户登录后,更新redis中存储用户的 token

    若有推送机制,则在登录后,推送至旧的设备上,提示用户已经再次登录,旧登录失效。

    • 访问

    访问时,解码jwt_token后,校验传输的token是否是redis中存储的值。若是,则是新用户,若不是,则是之前的jwt_token

  • 相关阅读:
    [TC_SRM_466]DrawingBlackCrosses
    [POJ3254]Corn Fields
    [openjudge6043]哆啦A梦的时光机
    网络流 24 题汇总(LOJ 上只有 22 题???)
    Xadmin组件的url设计
    《今日简史》一、旧故事已然崩坏,新故事尚未构建
    《人类简史》二、认知革命——上帝之手的秘密
    ORM复习
    无拘无束的爱情
    使用代理导致IE host被修改问题的解决方案
  • 原文地址:https://www.cnblogs.com/fhkankan/p/13522707.html
Copyright © 2011-2022 走看看