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

  • 相关阅读:
    frida rpc调用维护ios手机脚本
    latex表格调整行距
    latex插图自动在双栏的最top,IEEE期刊格式
    latex插图egin{minipage}强制左移hspace命令
    SYNTHIA-RAND-CITYSCAPES数据集云盘下载
    一种用于多张图片同时缩放比较细节的软件faststone
    shopxo安装插件被限制绑定账号的问题
    ShopXo框架去掉绑定商店的提示
    拓扑排序
    前缀和和差分
  • 原文地址:https://www.cnblogs.com/fhkankan/p/13522703.html
Copyright © 2011-2022 走看看