• rest_framework_jwt的简单使用


    安装

    pip install djangorestframework-jwt

    在app中注册

    INSTALLED_APPS = [
        ...
        # 解决跨域问题
        'corsheaders',
        'rest_framework',
        'xadmin',
        'crispy_forms',
        'rest_framework_jwt',
    
        ...
    ]

    配置:

    # rest_framework 配置
    REST_FRAMEWORK = {
        # 异常处理函数配置
        'EXCEPTION_HANDLER': 'luffyapi.utils.exceptions.luffy_exception_handler',
        # 在rest_framework认证中添加JWT的全局认证
        'DEFAULT_AUTHENTICATION_CLASSES': (
            'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
            'rest_framework.authentication.SessionAuthentication',
            'rest_framework.authentication.BasicAuthentication',
        ),
    }
    
    # JWT的认证
    import datetime
    
    
    JWT_AUTH = {
        'JWT_ENCODE_HANDLER':
            'rest_framework_jwt.utils.jwt_encode_handler',
        # 解析token
        'JWT_DECODE_HANDLER':
            'rest_framework_jwt.utils.jwt_decode_handler',
    
        # 生成JWT载荷部分的内容(中间一段内容)
        'JWT_PAYLOAD_HANDLER':
            'rest_framework_jwt.utils.jwt_payload_handler',
    
        # 从载荷中获取user关键字段,如user_id 或者username 用这个字段信息从数据库中查询用户
        'JWT_PAYLOAD_GET_USER_ID_HANDLER':
            'rest_framework_jwt.utils.jwt_get_user_id_from_payload_handler',
    
        # 自定义登录认证成功之后返回的字典内容,返回一个字典
        'JWT_RESPONSE_PAYLOAD_HANDLER':
            'rest_framework_jwt.utils.jwt_response_payload_handler',
    
        'JWT_SECRET_KEY': SECRET_KEY,  # 用于生成token签名部分的秘钥
        'JWT_GET_USER_SECRET_KEY': None,  # 根据每个用户生成不同的秘钥,需要放入一个函数,函数必须接受一个参数,参数为user对象,通过user对象生成一个token秘钥并返回,秘钥用于生成token签名
        'JWT_PUBLIC_KEY': None,  # 用于验证token是否合法的函数,设置此函数之后JWT_SECRET_KEY将失效
        'JWT_PRIVATE_KEY': None,  # 用于生成token的函数,设置此函数之后JWT_SECRET_KEY将失效
        'JWT_ALGORITHM': 'HS256',  # token签名部分的加密方式
        'JWT_VERIFY': True,  # 是否告诉对方密码有效
        'JWT_VERIFY_EXPIRATION': True,  # 是否开启验证token的有效时间,True开启,False关闭(token永久有效)
        'JWT_LEEWAY': 0,  # 允许token在过期几秒内任然可以使用
        'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=300),  # 设置token的到期时间
        'JWT_AUDIENCE': None,
        'JWT_ISSUER': None,
    
        'JWT_ALLOW_REFRESH': False,  # 刷新token到期时间,False不刷新,True刷新
        'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(days=7),  # 刷新一次添加多长有效时间
    
        'JWT_AUTH_HEADER_PREFIX': 'JWT',  # 指定token开始字符串必须是JWT
        'JWT_AUTH_COOKIE': None,  # 在使用token时是不是还接受cookie认证
    
    }

    登录url配置

    from rest_framework_jwt.views import obtain_jwt_token
    
    urlpatterns = [
        path('login/', obtain_jwt_token),
    
    ]
  • 相关阅读:
    Android Media Playback 中的MediaPlayer的用法及注意事项(二)
    Android Media Playback 中的MediaPlayer的用法及注意事项(一)
    34. Search for a Range
    33. Search in Rotated Sorted Array
    32. Longest Valid Parentheses
    31. Next Permutation下一个排列
    30. Substring with Concatenation of All Words找出串联所有词的子串
    29. Divide Two Integers
    28. Implement strStr()子串匹配
    27. Remove Element
  • 原文地址:https://www.cnblogs.com/wtil/p/14940521.html
Copyright © 2020-2023  润新知