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),

]

 

rest_framework_jwt的简单使用

上一篇:Redis非阻塞IO复用模型


下一篇:Cesium 矩阵变换