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),
    
    ]
  • 相关阅读:
    Laravel 集成 laravel Scout + Elasticsearch
    Vim Tab to Space and other configurations
    Gitlab To Gitlab 进行项目迁移
    win10 程序管理员权限读写文件和界面无法拖入的情况解决
    4.5 RNN循环神经网络(recurrent neural network)
    mumpy,h5py和tensorflow版本不匹配导致报错
    tensorflow预定义经典卷积神经网络和数据集tf.keras.applications
    QT失去focus后自动隐藏界面
    4.3CNN卷积神经网络最详细最容易理解--tensorflow源码MLP对比
    4.2tensorflow多层感知器MLP识别手写数字最易懂实例代码
  • 原文地址:https://www.cnblogs.com/wtil/p/14940521.html
Copyright © 2011-2022 走看看