zoukankan      html  css  js  c++  java
  • JWT登录与多方式登录

    JWT登录


    • urls
    from django.urls import path
    from user import views
    from rest_framework_jwt.views import obtain_jwt_token
    
    urlpatterns = [
        path('login/', obtain_jwt_token),
    ]
    
    • views
    # JWT登录
    def Login_return(token, user=None, request=None, role=None):
        '''
        :param token:   jwt 生成的token值
        :param user:    User对象
        :param request:     请求
        :return:
        '''
        if user.first_name:
            name = user.first_name
        else:
            name = user.username
    
        return {
            'authenticated': 'true',
            'id': user.id,
            'role': role,
            'name': name,
            'username': user.username,
            'email': user.email,
            'token': token,
        }
    
    • settings
    # jwt载荷中的有效期设置
    JWT_AUTH = {
        # 1. token前缀:headers中 Authorization 值的前缀
        'JWT_AUTH_HEADER_PREFIX' : 'JWT',
        # 2. token有效期:一天有效
        'JWT_EXPIRATION_DELTA' : datetime.timedelta(days=1),
        # 3. 刷新token:允许使用旧的token换新token
        'JWT_ALLOW_REFRESH': True,
        # 4. token有效期:token在24小时内过期,可续期token
        'JWT_REFRESH_EXPIRATION_DELTA':datetime.timedelta(hours=24),
        # 5. 自定义JWT载荷信息:自定义返回格式,需要手工创建
        'JWT_RESPONSE_PAYLOAD_HANDLER' : 'user.views.Login_return',
    }
    

    多方式登录


    • urls
    from django.urls import path
    from user import views
    from rest_framework_jwt.views import obtain_jwt_token
    
    urlpatterns = [
        path('login/', obtain_jwt_token),
    ]
    
    • views
    # 多方式登录
    class JJAuth(ModelBackend):
        def authenticate(self, request, username=None, password=None, **kwargs):
            try:
                user = User.objects.get(Q(username=username) | Q(phone=username) | Q(email=username))
            except Exception as e:
                return None
            if user is not None and user.check_password(password):
                return user
    
    • settings
    # 自定义验证后端
    AUTHENTICATION_BACKENDS = ['user.views.JJAuth']
    
  • 相关阅读:
    Python编程题24--回文数
    Python编程题23--移动零
    Python编程题22--只出现一次的数字
    Python编程题21--每日温度
    Python编程题20--最大子序和
    Python编程题19--比特位计数
    推荐系统中对比实验工具--伯乐bole
    pytorch中反向传播的loss.backward(retain_graph=True)报错
    win10彻底禁止自动更新(家庭版操作)
    linux使用清华源安装工具,切换清华源
  • 原文地址:https://www.cnblogs.com/zj555/p/13939136.html
Copyright © 2011-2022 走看看