python - 创建新中间件后,无法使用 JWT 令牌在 Django Rest Framework 自定义请求中间件中使用用户
问题描述
我想request.user
在 Django Rest Framework 自定义中间件中使用。它返回 AnonymousUser 并且我失败了。
我创建了返回真实用户的新自定义中间件。
from django.contrib.auth.middleware import get_user
from django.utils.functional import SimpleLazyObject
from rest_framework_jwt.authentication import JSONWebTokenAuthentication
class AuthenticationMiddlewareJWT(object):
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
request.user = SimpleLazyObject(lambda: self.__class__.get_jwt_user(request))
return self.get_response(request)
@staticmethod
def get_jwt_user(request):
user = get_user(request)
if user.is_authenticated:
return user
jwt_authentication = JSONWebTokenAuthentication()
if jwt_authentication.get_jwt_value(request):
user, jwt = jwt_authentication.authenticate(request)
return user
在中间件之上jwt_authentication.get_jwt_value(request)
,这总是返回 None。
如何修复它并request.user
在自定义中间件中使用?
解决方案
推荐阅读
- javascript - 使用 for 循环将元素推入数组的函数;在 console.log 中显示预期数组时返回空数组
- azure-api-management - Azure APIM 新开发人员门户无法正常工作
- python - 如何检查numpy中数组的值?
- c++ - 同一文件夹中的文件都包含同一文件夹中但文件夹名称在前的文件
- javascript - 如何更改材质UI React js中占位符的颜色
- url - 使用长 url 的谷歌表格中的 URL 缩短器
- r - 如何在ggplot中为x变量填充和标签名称使用单独的列?
- ios - IOS中的离子禁用返回和主页按钮硬件
- c# - 避免使用 VisualStudio / MSBuild 将内容文件复制到输出
- google-apps-script - gmail2gdrive 脚本中不同文件夹的两个文件