Django rest framework 如何知道将哪个用户分配给令牌(JWT Django rest框架)?

Django rest framework 如何知道将哪个用户分配给令牌(JWT Django rest框架)?,django-rest-framework,jwt,token,Django Rest Framework,Jwt,Token,我正在尝试创建博客更新API视图,但我需要知道更新帖子的用户是否与博客作者相同。令牌在标题中给出,如“授权持有者”。我如何知道标题令牌的用户是否与博客帖子的作者相同?这取决于使用的令牌。如果是JWT,您可以轻松解码并检查声明。您应该有一个sub声明,用于识别用户。它可能包含用户ID、他们的电子邮件或其他标识用户的信息 当使用JWTs时,您应该记住验证它们。您可以使用上的列表查找一个库,该库将帮助您实现JWT验证。还可以看一看我写的一篇文章,了解使用JWTs的陷阱 如果您的访问令牌是不透明令牌。然

我正在尝试创建博客更新API视图,但我需要知道更新帖子的用户是否与博客作者相同。令牌在标题中给出,如“授权持有者”。我如何知道标题令牌的用户是否与博客帖子的作者相同?

这取决于使用的令牌。如果是JWT,您可以轻松解码并检查声明。您应该有一个
sub
声明,用于识别用户。它可能包含用户ID、他们的电子邮件或其他标识用户的信息

当使用JWTs时,您应该记住验证它们。您可以使用上的列表查找一个库,该库将帮助您实现JWT验证。还可以看一看我写的一篇文章,了解使用JWTs的陷阱

如果您的访问令牌是不透明令牌。然后,您应该使用获取分配给令牌的数据(发出令牌的服务器应该公开令牌内省端点)


如果不确定访问令牌是JWT格式还是不透明,可以转到JWT令牌选项卡中粘贴访问令牌。如果是JWT,您将在右侧看到解码数据。此外,JWT是长字符串,总是有三个部分由点分隔。

每个JWT令牌都有一个有效负载和一个签名。你可以读更多。 如果您使用的是djangorestframeworksimplejwt包,那么负载将类似于
{“user\u id”:1}
。这就是你知道它属于哪个用户的方式。(它是用base64编码的,因此您必须对其进行解码才能看到此信息)

但是,您实际上不必考虑这一点,因为该包将为您解析令牌。因此,您只需在视图中使用
request.user
,即可知道哪个用户已通过身份验证。要检查它是否与
Blog
object中的相同,您可以执行以下操作:

blog = Blog.objects.get(pk=1)
if request.user == blog.created_by:
    pass
这已经有答案了,请看一看!