这篇文章给大家介绍简单JWT身份验证怎么在DRF项目中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
登录返回令牌和刷新
<强>用户模型类:强>
我的用户模型类继承的是<代码> django.contrib.auth.models。AbstractUser> 代码,这样可以使用Django自带的认证。
如果继承该类,我们就必须在设置中配置<代码> AUTH_USER_MODEL=皍sers.UserProfile" 代码>
得到datetime import datetime 得到django.db import 模型 得到django.contrib.auth.models import  AbstractUser #,Create your  models 这里。 class UserProfile (AbstractUser): “才能”;“ 用才能户 “才能”;“ name 才能=,models.CharField (max_length=30, null=True,,空白=True, verbose_name=靶彰? 时间=birthday 才能;models.DateField (null=True,,空白=True,, verbose_name=俺錾暝隆? 时间=gender 才能;models.CharField (max_length=6,,选择=((“male",, u"男“),,(“female",,“女“)),,默认=癴emale",, verbose_name=靶员稹? mobile 才能=,models.CharField (null=True,,空白=True,, max_length=11, verbose_name=暗缁啊? email 才能=,models.CharField (max_length=100,, null=True,,空白=True, verbose_name=坝氏洹? class 才能;元: ,,,verbose_name =,“用户”; ,,,verbose_name_plural =,“用户”; def 才能__str__(自我): ,,,return self.username
<强>序列化文件:强>
注意这里使用的<代码>用户> 代码是Django管理的用户模型类,要从<代码> django.contrib.auth.get_user_model 代码>实例化获取。
在<代码> 代码>用户模块的<代码> serializers.py 代码>文件中写如下序列化类继承自<代码> rest_framework_simplejwt.serializers。TokenObtainPairSerializer 代码>:
得到django.contrib.auth import get_user_model 时间=User get_user_model () class MyTokenObtainPairSerializer (TokenObtainPairSerializer): @classmethod才能 def 才能get_token (cls,用户): ,,,token =,超级().get_token(用户) ,,,令牌(& # 39;名字# 39;],=user.username ,,,return 令牌 def 才能验证(自我,,attrs): ,,,,,, ,,,登录返回令牌和刷新 ,,,:param attrs: ,,,:返回: ,,,,,, ,,,data =,超级(). validate (attrs) ,,,数据(& # 39;标记# 39;],=,str(数据(“access")) ,,,return 数据
根据官方文档的说明,<代码> get_token 代码>方法之所以设置<代码>标记(& # 39;名字# 39;]> 代码是因为程序可能运行在集群上,这里不写也可以。
<强>编写视图类强>:
得到users.serializers import MyTokenObtainPairSerializer class MyTokenObtainPairView (TokenObtainPairView): serializer_class 才能=,MyTokenObtainPairSerializer
<强>编写url: 强>
其中<代码> api/令牌/代码>和<代码> api/令牌/更新/> 代码两个url是简单JWT自带的令牌方法:
- <李>
<代码> api/令牌/> 代码用于获取令牌
李> <李><代码> api/令牌/更新/> 代码用于刷新令牌
李>得到django.conf.urls import url 得到django.urls import 包括路径 得到rest_framework_simplejwt.views import ( TokenObtainPairView才能, TokenRefreshView才能, ) urlpatterns =, ( #,才能simple jwt 认证接口 路径才能(& # 39;api/令牌/& # 39;,,TokenObtainPairView.as_view (),, name=& # 39; token_obtain_pair& # 39;), 路径才能(& # 39;api/令牌/更新/& # 39;,,TokenRefreshView.as_view (),, name=& # 39; token_refresh& # 39;), 路径才能(& # 39;登录/& # 39;,,MyTokenObtainPairView.as_view (),, name=& # 39; token_obtain_pair& # 39;), )
<强>设置配置SIMPLE_JWT: 强>
这是对令牌的一些自定义设置包括获取的牌和刷新的生命周期等配置,通过查看<代码> rest_framework_simplejwt> 代码的源码可以发现有很多自定义配置,感兴趣的小伙伴可以通过查看官方文档了解更多,这里我只配置了获取的令牌的生命周期。
<>强启动程序访问:强>