Django rest 框架 jwt 令牌权限

Posted

技术标签:

【中文标题】Django rest 框架 jwt 令牌权限【英文标题】:Django rest framework jwt token permission 【发布时间】:2018-11-19 20:18:22 【问题描述】:

现在我用 Django rest-framework 制作了一些 API。我使用 JWT 进行令牌认证。 此刻,我有一些关于令牌权限的问题。 如何在 Django 中检测令牌权限?

例如,有user Auser B。 当user A写文章“test”时,文章“test”只能被user A编辑或删除。 但是如何检测文章“test”的权限?

每次用户登录时都会更改令牌。所以通过token检测并不是正确的方法。

我在谷歌上搜索了几个小时,如果有任何解决方案。有没有办法通过token判断用户权限?

提前致谢!

【问题讨论】:

JWT 令牌用于身份验证。因此,一旦用户提供了有效的令牌,他就可以登录您的应用程序。此时,您可以检索用户实例,并且可以管理谁可以编辑、删除甚至添加新帖子。 看到这个link 【参考方案1】:

JWT 身份验证允许您识别之前注册过您的 Django 应用程序的用户,这要归功于他们发送到您的服务器的每个请求都附加了令牌。 然后,权限(您可以根据需要定义和塑造)允许您允许或不允许用户访问/编辑给定的资源/页面。 更实际地,您想要实现的目标可以设置如下(假设您使用基于类的视图):

class MyApiEndpoint(ApiView):
    authentication_classes = (JSONWebTokenAuthentication,)
    permission_classes = (IsOwner,)

地点:

JSONWebTokenAuthenticationdjangorestframework-jwt提供的认证类。 IsOwner 是一个 Permission 类,您需要编写它来检查当前用户是否是给定视图/API 端点托管的资源的所有者。 (More on this here)。

【讨论】:

如何在 simple-JWT 库中实现这个?我已经使用 Apache 部署了一个 Django 应用程序,但得到的答案与上面的 OP 相同。

以上是关于Django rest 框架 jwt 令牌权限的主要内容,如果未能解决你的问题,请参考以下文章

Django rest框架登录后获取JWT令牌

如何从 django rest 框架访问 jwt 令牌到 Angular 前端

如何在 django rest 框架中验证 jwt 身份验证中的令牌

在 Django REST 框架中使用 JWT 时,刷新令牌和访问令牌存储在哪里?

使用 otp 获取 api 令牌的 Django REST 框架的 JWT 身份验证

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