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 A
和user B
。
当user A
写文章“test”时,文章“test”只能被user A
编辑或删除。
但是如何检测文章“test”的权限?
每次用户登录时都会更改令牌。所以通过token检测并不是正确的方法。
我在谷歌上搜索了几个小时,如果有任何解决方案。有没有办法通过token判断用户权限?
提前致谢!
【问题讨论】:
JWT 令牌用于身份验证。因此,一旦用户提供了有效的令牌,他就可以登录您的应用程序。此时,您可以检索用户实例,并且可以管理谁可以编辑、删除甚至添加新帖子。 看到这个link 【参考方案1】:JWT 身份验证允许您识别之前注册过您的 Django 应用程序的用户,这要归功于他们发送到您的服务器的每个请求都附加了令牌。 然后,权限(您可以根据需要定义和塑造)允许您允许或不允许用户访问/编辑给定的资源/页面。 更实际地,您想要实现的目标可以设置如下(假设您使用基于类的视图):
class MyApiEndpoint(ApiView):
authentication_classes = (JSONWebTokenAuthentication,)
permission_classes = (IsOwner,)
地点:
JSONWebTokenAuthentication是djangorestframework-jwt提供的认证类。 IsOwner 是一个 Permission 类,您需要编写它来检查当前用户是否是给定视图/API 端点托管的资源的所有者。 (More on this here)。【讨论】:
如何在 simple-JWT 库中实现这个?我已经使用 Apache 部署了一个 Django 应用程序,但得到的答案与上面的 OP 相同。以上是关于Django rest 框架 jwt 令牌权限的主要内容,如果未能解决你的问题,请参考以下文章
如何从 django rest 框架访问 jwt 令牌到 Angular 前端
如何在 django rest 框架中验证 jwt 身份验证中的令牌
在 Django REST 框架中使用 JWT 时,刷新令牌和访问令牌存储在哪里?