Django(75)django-rest-framework-simplejwt「建议收藏」

Django(75)django-rest-framework-simplejwt「建议收藏」前言由于之前我们一直使用的django-rest-framework-jwt这个库,但是作者在17年的时候就已经不再维护了(有部分bug没有解决),所以我们也就不用了,目前我们使用django-r

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言

由于之前我们一直使用的django-rest-framework-jwt 这个库,但是作者在17年的时候就已经不再维护了(有部分bug没有解决),所以我们也就不用了,目前我们使用django-rest-framework-simplejwt
 

介绍

Simple JWT为Django REST Framework提供了JSON Web TOKEN身份验证。并且借鉴了DRF中的另一个JSON web token库和django-rest-framework-jwt
 

安装

1.使用以下pip命令安装

pip install djangorestframework-simplejwt

 

2.然后我们在settings.py中认证类

REST_FRAMEWORK = {
    ...
    'DEFAULT_AUTHENTICATION_CLASSES': (
        ...
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    )
    ...
}

 

3.我们在根urls.py中配置路由视图TokenObtainPairView 和 TokenRefreshView

from rest_framework_simplejwt.views import (
    TokenObtainPairView,
    TokenRefreshView,
)

urlpatterns = [
    ...
    path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
    ...
]

 

4.如果需要使用本地化,那么只需把rest_framework_simplejwt加入到INSTALLED_APPS

INSTALLED_APPS = [
    ...
    'rest_framework_simplejwt',
    ...
]

 

验证

最后我们使用接口工具验证simple jwt是否能正常工作,访问http://127.0.0.1:8000/api/token/
Django(75)django-rest-framework-simplejwt「建议收藏」
可以看到返回了access和refresh两个token

  • access:默认5分钟的有效期
  • refresh:当access过期了,就需要传入refresh字段,重新刷新token,访问http://127.0.0.1:8000/api/token/refresh/

Django(75)django-rest-framework-simplejwt「建议收藏」
 

配置信息解释

在settings.py中可以配置一些默认的信息

# Django project settings.py

from datetime import timedelta

...

SIMPLE_JWT = {
    'ACCESS_TOKEN_LIFETIME': timedelta(minutes=5),   # 设置token有效时间
    'REFRESH_TOKEN_LIFETIME': timedelta(days=1),  # 刷新token有效时间
    'ROTATE_REFRESH_TOKENS': False,  
    'BLACKLIST_AFTER_ROTATION': False,
    'UPDATE_LAST_LOGIN': False,  # 设置为True会在用户登录时,更新user表中的last_login字段

    'ALGORITHM': 'HS256',  # 加密算法
    'SIGNING_KEY': settings.SECRET_KEY,  # 签名密钥
    'VERIFYING_KEY': None,  # 验证密钥,用于验证生成令牌的内容
    'AUDIENCE': None,  # 设置为None时,此字段将从token中排除,并且不会进行验证
    'ISSUER': None,  # 设置为None时,此字段将从token中排除,并且不会进行验证
    'JWK_URL': None,  # 设置为None时,此字段将从token中排除,并且在验证期间不使用
    'LEEWAY': 0,  # 用来给到期时间留一些余地

    'AUTH_HEADER_TYPES': ('Bearer',),  # 认证的标签头,类似jwt token中的jwt
    'AUTH_HEADER_NAME': 'HTTP_AUTHORIZATION',  # 身份验证的授权标头名称
    'USER_ID_FIELD': 'id',
    'USER_ID_CLAIM': 'user_id',  # 生成token中声明将用于存储用户标识符  
    'USER_AUTHENTICATION_RULE': 'rest_framework_simplejwt.authentication.default_user_authentication_rule',

    'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',),
    'TOKEN_TYPE_CLAIM': 'token_type',  # 用于存储token类型的声明名称

    'JTI_CLAIM': 'jti',  # 用于存储令牌的唯一标识符的声明名称

    'SLIDING_TOKEN_REFRESH_EXP_CLAIM': 'refresh_exp',
    'SLIDING_TOKEN_LIFETIME': timedelta(minutes=5),
    'SLIDING_TOKEN_REFRESH_LIFETIME': timedelta(days=1),
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/165699.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 排序二叉树及其Java实现[通俗易懂]

    排序二叉树及其Java实现[通俗易懂]定义排序二叉树的定义也是递归定义的,需要满足:(1)若它的左子树不为空,则左子树上所有节点的值要均小于根节点的值;(2)若它的右子树不为空,则右子树上所有节点的值要均大于根节点的值;(3)左、右子树也分别是排序二叉树如下图,对于排序二叉树,若按中序遍历就可以得到由小到大的有序序列。创建创建排序二叉树的步骤就是不断像排序二叉树中添加新节点(p)的过程:(1)以根节

    2022年7月25日
  • func_get_args()在php71与php56的区别

    func_get_args()在php71与php56的区别

    2021年11月6日
  • Java——闰年判断

    Java——闰年判断目录任务1、闰年判断(一)编程实现方法一、采用并列式多分支结构评定成绩等级方法二、采用嵌套式多分支结构评定成绩等级方法三、采用延拓式多分支结构评定成绩等级方法四、采用开关式多分支结构评定成绩等级任务1、闰年判断什么是闰年?有两种情况:能被4整除但是不能被100整除;能被400整除解决闰年判断问题,涉及三种运算:算术运算、关系运算、逻辑运算第一种闰年情况:year%4==0&&year%100!=0第二种闰年情况:year%400==0(一)编程实现

    2022年7月17日
  • android更新ui的方式_android ui界面模板

    android更新ui的方式_android ui界面模板该楼层疑似违规已被系统折叠隐藏此楼查看此楼1.status_bar_latest_event.xml的修改:源代码:xmlns:android=”http://schemas.android.com/apk/res/android”>1.通知条目高度的修改:上面的65.0sp和64.0sp就是高度2.通知条目下面一般都有一条白线,透明方法:①drawable-mdpi文件夹内divid…

    2022年9月18日
  • ZigBee 协议栈的调度顺序代码分析「建议收藏」

    ZigBee 协议栈的调度顺序代码分析「建议收藏」ZigBee协议栈的调度顺序man()->osal_init_system()->osalIntTasks()->SampleApp_Init()

    2022年5月28日
  • 2013-4-3 C#中alt键不是Keys.Alt 而是 Keys.LMenu

    2013-4-3 C#中alt键不是Keys.Alt 而是 Keys.LMenu

    2022年2月21日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号