我正在使用 Django Rest Framework,并且包含了一个名为 的 3rd 方包REST框架simple智威汤逊认证这是引用的新框架,
和这个,REST 框架 JWT 身份验证,这是旧的(我想象),因为 github 上很长一段时间没有更新,并且可能不支持新版本。
我正在寻找一种方法,就像这样stackoverflow-第 3 个答案上的链接通过中间件,获取每个请求的用户信息,以便在需要时使用 django 信号应用/保存我的模型中的用户对象。
我检查了文档和互联网,但没有找到任何东西。因此,如果您已经遇到过这种情况,我将非常感谢您的帮助。
谢谢
要从用户模型获取用户名,您应该使用 request.user。这将为您提供请求中经过身份验证的用户的信息。但是,如果您使用 simple_jwt,则无法在中间件中直接使用 request.user,因为身份验证机制在视图函数中工作。
因此,您应该在中间件内部手动进行身份验证,然后可以使用 request.user 从用户模型中获取任何数据。
from rest_framework_simplejwt import authentication
class MyMiddleware():
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
return response
def process_view(self, request, view_func, view_args, view_kwargs):
request.user = authentication.JWTAuthentication().authenticate(request)[0] # Manually authenticate the token
print(request.user) # Use the request.user as you want
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)