JWT多方式登录及自定义验证

RBAC(基于用户权限访问控制的认证)   (自己了解:基于auth的认证规则)    Django框架采用的是RBAC认证规则, RBAC认证规则通常会分为 三表规则、五表规则, Django采用的是六表规则    三表:用户表、角色表、权限表    五表:用户表、角色表、权限表、用户角色关系表、角色权限关系表    六表:用户表、角色表、权限表、用户角色关系表、角色权限关系表、用户权限关系表

JWT 多方面登录

用户可以以用户名、邮箱、手机号登录

  • 手机号+密码

  • 用户名+密码

  • 邮箱名+密码

流程分析(post请求):

  • 路由 -- 自动生成

  • 视图类: -- ViewSet(ViewSetMixin, views.APIView)

  • 序列化类: -- 重写validate方法,在这里面对用户名和密码进行校验

之前写的逻辑处理一般都是在视图类中,现在把逻辑拿到了序列化类的validate全局钩子中,在视图函数中 就无需写逻辑了,执行到.is_valid就会执行validate方法

  • 重点:视图类和序列化类之间交互数据的桥梁:context={}(是1个字典)

  • 自定义用户表,登录手动签发token,自定义的认证类

  • 认证通过,正常情况下查询得到当前登录用户

效果

用户名登录

代码

  • settings

  • urls

  • views

  • models

  • utils

  • serializer

JWT 自定义验证

  • authentications.py (创建认证文件)

  • settings.py

由于设置了所有操作都需要登录后才能访问,那登录接口无法访问得到token数据。解决如下:

携带 token 访问另一个接口:

Last updated