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 JWTDjango 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中配置路由视图TokenObtainPairViewTokenRefreshView

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「建议收藏」
可以看到返回了accessrefresh两个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),
}

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 2年开发经验总结的java面试题(有完整答案)

    2年开发经验总结的java面试题(有完整答案)一、Java基础部分1、Java基本数据类型有八种:四种整数类型(byte、short、int、long),两种浮点数类型(double、float)一种字符类型char,一种布尔类型Boolean记忆:8位:Byte(字节型)16位:short(短整型)、char(字符型)32位:int(整…

  • MYSQL | ERROR 1305(42000) SAVEPOINT *** DOES NOT EXIST「建议收藏」

    MYSQL | ERROR 1305(42000) SAVEPOINT *** DOES NOT EXIST

  • 如何将Eclipse设置为中文版[通俗易懂]

    如何将Eclipse设置为中文版[通俗易懂]如何将Eclipse设置为中文版我们知道Eclipse一个开放源代码的、基于Java的可扩展开发平台,不管学习还是工作都是一款不错的集成开发环境(IDE),但是对于一些初学者看到Eclipse上

  • 漫谈词向量

    漫谈词向量原文:Onwordembeddings作者:SebastianRuder译者:KK4SBB审校:王艺责编:何永灿,关注人工智能,投稿请联系heyc@csdn.net或微信号289416419目录词向量的来历词向量模型语言建模概述经典的神经语言模型C&W模型Word2VecCBOWSkip-gram非监督式学习得到…

  • mysql 数据_MySQL和SQL

    mysql 数据_MySQL和SQL附带国内精确到市,国外的精确到省吧。下载这里的:https://download.csdn.net/download/luolincsdn/10675557有的下载都没用,想一想还是放出来比较好。这是数据表:DROPTABLEIFEXISTS`ht_location`;CREATETABLEIFNOTEXISTS`ht_location`(`id`int(11…

  • 手机app抓包

    手机app抓包总是收到公司部分客户特定机型,情况下才出现的bug此类问题较为难以复现需要客户协助进行抓包处理,写一个简单教程方便与客户沟通!app下载地址链接:https://pan.baidu.com/s/1M8x8DsTy0pcgnGyKEsJ_Ow提取码:cd4i1.安装抓包软件2.进入错误页面的上一个页面如果B页面是出错的页面,点击A(页面或者按钮)进入到B页面那么我们就打开A页面就可以了3.选择需要抓包的应用4.抓取操作信息5.如果错误信息比较多点击.

发表回复

您的电子邮箱地址不会被公开。

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