登录
1、JWT保持状态
JWT的组成
jwt的设置分为三部分:头部、载荷、以及签证
- 头部
jwt的头部固定为两个值部分typ和alg,这里的头部数据就是一个json串,两个字段是必须的,不能多也不能少,alg字段指定了签证生成的算法,默认值是HS256,type字段指明类型
{
“typ”: “JWT”,
“alg”: “HS256”
}
- 载荷
载荷是一个json数据,是表明用户身份的数据,也可自行指定字段很灵活,也有固定字段表示特定含义
如果是自定义的字段,一般是一些用户名,用户id等相关不敏感的用户信息
如果是固定字段,那么可以参考使用如下这些
- 签证
把前面两部分的内容通过加密算法+密钥加密后得到的一个字符串
- header (base64后的)
- payload (base64后的)
- secret
这个部分需要base64加密后的header和base64加密后的payload使用.
连接组成的字符串,然后通过header中声明的加密方式进行加盐secret
组合加密,然后就构成了jwt的第三部分。
将这三部分用.
连接成一个完整的字符串,构成了最终的jwt:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
2.JWT配置
1.安装DRF,JWT
pip install djangorestframework-jwt
2.在settings配置
REST_FRAMEWORK = {
"DEFAULT_AUTHENTICATION_CLASSES":("rest_framework_jwt.authentication.JSONWebTokenAuthentication",) # 全局设置的方法,也可在单个视图中设置
}
3.在url中添加响应路径
from rest_framework_jwt.views import obtain_jwt_token
urlpatterns = [
path("login/",obtain_jwt_token)<