drf-jwt第三方插件,DRF的三大认证的具体使用,多方式登陆的实现
1|0一、 JWT认证的使用
1|11. 第三方drf-jwt插件
-
借助第三方的
drf-jwt
插件,进行jwt认证,完成token的签发和校验和刷新(需要先手动下载,命令是:pip install djangorestframework-jwt
) -
drf-jwt
插件其实就是一个小的应用,包含了settings,views,utils,serializers,models
等文件。 -
有关token的配置参数就在插件的settings文件中,我们也可以在自己项目的settings文件中配置后,然后覆盖掉插件中的默认配置,达到自定义token配置的目的。
-
-
注意:在token的签发中,有两个方法很重要
1|22. 利用第三方插件的views完成token操作
2|0二、DRF的三大认证的使用
-
三大认证组件:认证组件、权限组件、频率组件
- 认证组件:身份认证(游客/合法用户/非法用户)
- 权限组件:针对游客和合法用户对某一视图函数的访问权限
- 频率组件:限制某一视图函数在一定时间内被访问的次数
-
三大组件是按流水线式轮流进行,即:先进行认证——》再权限校验——》最后是频率校验
-
借助第三方的
drf-jwt
插件,进行jwt认证,完成token的签发和校验和刷新(需要先手动下载,命令是:pip install djangorestframework-jwt
) -
-
在视图类的自身逻辑之前书写需要的三大认证功能(注意是之前),即在视图类的下面的第一行书写三大认证。
3|0三、认证组件的使用
3|11. 认证组件的用法和注意点
-
实际开发中对DRF自带的认证功能需求大,且一般在全局中配置认证组件。
-
自定义的认证功能在实际开发中需求较少,但也可能会出现。
-
注意:登录接口不用参与任何认证与权限的校验
-
在认证功能中,认证类返回值有以下3中情况
-
3|22. 认证组件使用步骤
(1)使用DRF自带的认证功能(非登陆功能中)
- 使用步骤:
(2)使用自定义的认证类(非登录功能中)
- 使用步骤:
(3)自定义认证类实例
4|0四、权限组件的使用
4|11. 权限组件的用法和注意点
-
权限校验一般进行局部配置,因为不同的用户对视图类的权限差别很大,所以要分别配置(当然也可以同时进行全局配置和局部配置)
-
在实际开发中,DRF自带的权限组件功能和自定义权限类两者都会有需求
-
注意:登录接口不用参与任何认证与权限的校验
-
权限类的返回值有两种情况
-
4|22. 权限组件使用步骤
(1)使用DRF自带的权限功能(非登录功能中)
- 使用步骤
(2)使用自定义的权限类
(3)自定义权限类实例
5|0五、频率组件的使用
5|11. 频率组件的用法和注意点
-
DRF自带的频率组件只有频率限制的条件,需要我们自己实现限制功能。
-
频率组件都需要我们自定义频率类,因此需求很大
-
频率校验一般做局部配置,但是频率校验的限制条件在settings中配置
-
频率类的返回值有两种
-
5|22. 频率组件使用步骤
- 直接就是使用自定义的频率类
(1)自定义频率类实例
6|0六、多方式登陆的实现
- 实现用户名、邮箱、电话号码三种方式的登陆
- 同时实现登陆功能的
jwt认证的 token的签发
6|11. 登陆功能中的注意点
- token只能由登陆接口签发
- 登陆接口也是APIView的子类,使用就一定会进行认证、权限的校验,但是实际上,登陆接口不能参与任何认证和权限的校验,所以要进行认证和权限校验的局部禁用。
- 登陆所需的数据和登陆校验以及token的签发都是通过序列化类完成的。
- 注意:因为登陆是需要用户提交数据的,所以走得是post请求。但是当走post请求时,系统会默认当前要进行的是增功能。因此,我们在序列化类中,要把系统字段改为同名的自定义反序列化字段。
- 在进行token的签发时,需要用到
drf-jwt
插件来完成
6|22. 多方式登陆的实现代码
__EOF__

本文链接:https://www.cnblogs.com/Mcoming/p/12142204.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!