此内容根据文章生成,并经过人工审核,仅用于文章内容的解释与总结
投诉
有些时候,我们需要将access_token作为参数传递,而不是携带请求头中
这个时候,我们可以先豁免将jwt验证,然后将参数中的token放到请求头中,
然后使用官方函数手动验证。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| from rest_framework_simplejwt.authentication import JWTAuthentication # 豁免验证 permission_classes = [AllowAny]
def parse(self, request, token): authentication = JWTAuthentication() request.META['HTTP_AUTHORIZATION'] = 'Bearer ' + token user, token = authentication.authenticate(request) return user def get(self, request): # 获取到get方法的参数 params = request.query_params # id = request.user.id # print(id) if not params.get('token'): return Response({'msg': 'token未传入', 'code': 403}, status=status.HTTP_403_FORBIDDEN) else: token = params.get('token') # 为请求头添加token user = self.parse(request, token)
# 利用jwt解析token函数进行登录验证并且得到用户id if not user: return Response({'msg': 'token无效', 'code': 403}, status=status.HTTP_403_FORBIDDEN)
|
parse
parse的主要作用便是在请求头中添加token并且进行验证,这也是整个流程的关键。
get
下面的get是drf中get请求处理函数,算是使用实例,无需在意。