定制网站建设公司有哪些,wordpress 主题颜色,青岛模板建站代理,军事新闻头条最新消息一、认识session与token
这里就直接引用别人的文章#xff0c;不做过多说明
网络应用中session和token本质是一样的吗#xff0c;有什么区别#xff1f; - 知乎
二、token响应定制
在全局配置表中配置 DEFAULT_AUTHENTICATION_CLASSES: [# 指定jwt Token认证rest_framew…一、认识session与token
这里就直接引用别人的文章不做过多说明
网络应用中session和token本质是一样的吗有什么区别 - 知乎
二、token响应定制
在全局配置表中配置 DEFAULT_AUTHENTICATION_CLASSES: [# 指定jwt Token认证rest_framework_jwt.authentication.JSONWebTokenAuthenticationrest_framework_jwt/views.py中
查看ObtainJSONWebToken类
发现里面引用了JSONWebTokenSerializer序列化器类
users应用的url.py
引用obtain_jwt_token from django.urls import path
from interfaces import views
from rest_framework_jwt.views import obtain_jwt_tokenurlpatterns [path(login/, obtain_jwt_token)
] 发现rest_framework_jwt/views.py中有提供post方法
登录之后发现输出只有返回token字段 如果我们想让user_id和user_name也输出的话我们就要定制输出了
查看rest_framework_jwt/views.py中post方法里面有调用jwt_response_payload_handler方法
如果不需要改写可以在项目setting.py文件中直接引用
JWT_AUTH{JWT_RESPONSE_PAYLOAD_HANDLER:rest_framework_jwt.utils.jwt_response_payload_handler,
} 终于在rest_framework_jwt.utils.py文件中发现了jwt_response_payload_handler
所以我们要改写这个方法
本地项目的utils文件夹中新建一个handler_jwt_response.py def jwt_response_payload_handler(token, userNone, requestNone):Returns the response data for both the login and refresh views.Override to return a custom response such as including theserialized representation of the User.Example:def jwt_response_payload_handler(token, userNone, requestNone):return {token: token,user: UserSerializer(user, context{request: request}).data}return {user_id: user.id,user_name: user.username,token: token}改写之后还要在全局配置表里修改引用路径
JWT_AUTH{JWT_RESPONSE_PAYLOAD_HANDLER:# rest_framework_jwt.utils.jwt_response_payload_handler,utils.handler_jwt_response.jwt_response_payload_handler,
}
运行得到想要的结果