zoukankan      html  css  js  c++  java
  • 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:重写返回键动画
    获得今天零点时间戳(转)
    【转】完美解决Android 9.0以上HTTP网络请求被限制问题
    Java的三种取整方法
    thymeleaf控制checkbox的选中状态回显
    thymeleaf控制checkbox的value值
    Supervisor 简单使用
    关于Requests代理,你必须知道的
    py-spy 常见问题及使用说明
    记一次Scrapy进程卡死的Debug过程
  • 原文地址:https://www.cnblogs.com/wtil/p/14940521.html
Copyright © 2011-2022 走看看