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

 

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

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

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


相关推荐

  • qml 结合 QSqlTableModel 动态加载数据 MVC「建议收藏」

    效果预览:一、准备好对应的 QSqlTableModel#ifndefLOCALMUSICMODEL_H#defineLOCALMUSICMODEL_H#include<QObject>#include<QSqlTableModel>#include<QMediaPlayer>#include"libzplay.h"usingname…

    2022年4月10日
    189
  • mysql8.0.26安装及配置超详细教程(ps怎么下载安装详细步骤图)

    文章目录:官网下载MySQL的安装包添加并配置my.ini文件配置系统变量并初始化MySQL安装并启动MySQLNavicat连接MySQL并修其密码安装过程中常见问题及其解决方法官网下载MySQL的安装包下载链接如下:MySQL8.0.20版本其他版本:MySQL8.0.16版本MySQL8.0.20版本压缩包解压后如下图所示:添加并配置my.ini文件在原解压根…

    2022年4月13日
    48
  • 优秀的有趣的博客

    优秀的有趣的博客昨晚和几个老同学小聚,聊得很开心。忘了到哪儿聊起一些牛人的博客,走得时候华仔还一直说要我一定记得把博客链接email给他。索性写个资源帖,记录一些我经常浏览的博客,并在此向所有提供,分享优秀资源的博主们致敬!也期待大家能留言推荐其他优秀的博客~大牛:刘未鹏http://mindhacks.cn/绝对的绝对的大牛,在大一时读到他的《我在南大的七年》,从此成了我和我身边很多朋友的必…

    2022年9月3日
    2
  • linux修改文件内容如何保存退出

    linux修改文件内容如何保存退出1.进入文件vim文件名(vimtest.txt)2.编辑完成之后,按ESC键跳到命令模式(命令前面冒号是必要的):  :w保存文件但不退出vi  :wfile将修改另外保存到file中,不退出vi  :w!强制保存,不推出vi  :wq保存文件并退出vi  :wq!强制保存文件,并退出vi  :q不保存文件,退出vi  :q!不保存文件,强制退出vi  :e!放弃所有修改,从上次保存文件开始再编辑…

    2022年7月26日
    3
  • 建立内网Windows补丁服务器「建议收藏」

    建立内网Windows补丁服务器建立内网Windows补丁服务器实施方案一、完成内网WSUS服务器的架设。二、对客户端计算机进行设置。三、进行外网WSUS服务器的架设。建立内网Windows补丁服务器众所周知,Windows系统有着种种安全漏洞和不足,这些都要依靠微软发布的一个个补丁来弥补,但公司内网无法访问Internet,,不能及时地下载更新。补丁的分发是微软应尽的责任,所以他们开发了WindowsServerUpdateServices(简称WSUS)这一软件,可以实现通过一台服务器下载更新

    2022年4月16日
    50
  • 计算一段日期内的周末天数(星期六,星期日总和)(

    计算一段日期内的周末天数(星期六,星期日总和)(简介:这是计算一段日期内的周末天数(星期六,星期日总和)(的详细页面,介绍了和php,有关的知识、技巧、经验,和一些php源码等。class='pingjiaF'framebord

    2022年7月3日
    30

发表回复

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

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