问题标签 [django-rest-framework-jwt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2376 浏览

django - 使用 Django rest-framework-jwt 撤销令牌

我正在考虑允许用户撤销以前发布的令牌(是的,即使它们设置为在 15 分钟内到期),但没有找到使用DRF-jwt 的任何方法。

现在,我正在考虑几个选项:

  • 希望 SO 上的某个人会告诉我如何开箱即用地做到这一点;-)
  • 使用 jti 字段作为计数器,并且在撤销时要求 jti > last jti。
  • 将用户级盐添加到签名过程中,并在撤销时更改它
  • 在一些 Redis 数据库中存储实时令牌

以上任何一条路都可以吗?

0 投票
1 回答
3502 浏览

django - Django TokenAuthentication - 扩展 JWT 获取_jwt_token

我有一个由Django REST 框架 JWT Auth提供支持的 Django REST 应用程序和令牌身份验证

让我制定我的高级目标:

我的目标是为用户生成一个令牌,如果他提供正确的凭据,然后在成功登录后立即执行一些额外的操作。为简单起见,假设我想将“Hello”打印到控制台。

现在我的代码如下所示:

我想做的是以下

  1. 获取obtain_jwt_token生成的令牌
  2. 如果认证成功,做一些额外的操作并将令牌返回给用户。

我迷失在所有与身份验证类相关的 Django 架构的丛林中。我是否理解正确,如果我使用 Django JWT 之类的第三方包,我的登录过程没有电源,并且在用户登录后无法执行其他操作?如果我想在登录过程中拥有更多权力,我必须完成 Django JWT 开发人员从头开始完成的所有工作吗?我可以以某种方式在 Django JWT 的顶部obtain_jwt_token添加一些操作吗?

0 投票
2 回答
14161 浏览

django-rest-framework - Django REST JWT 刷新

使用 JWT 实现 Django REST 和身份验证。对于 JWT 令牌,我们必须在它过期之前对其进行刷新。过期的 JWT 不会提供新的令牌。

对于我的移动设备,我需要每 10 分钟刷新一次令牌 (JWT_EXPIRATION_DELTA)。如果用户超过 10 分钟不活动,那么我需要要求登录。即使在 JWT 令牌过期后,有什么方法可以刷新令牌。(我们可以将刷新时间限制为2天)

什么是在 Mobile 中处理此行为的最佳方法。

谢谢。

0 投票
1 回答
3153 浏览

django - djangorestframework-jwt 未提供身份验证凭据

我正在尝试使用 django rest_framework_jwt。我可以让它生成一个令牌,但是当我尝试在标题中将它发送到受保护的视图时,我得到“未提供身份验证凭据”。

我发送的标题格式是:

设置.py

视图.py

0 投票
0 回答
370 浏览

python - 如何使用 django rest 框架安全地下载文件?我正在使用 Oauth2

我正在创建一个 Django rest api 并使用 Oauth2 进行身份验证和令牌生成。我需要有关使用 REST api 安全下载任何文件的信息。我怎样才能做到这一点。

下面是我的序列化数据,我想安全地使用 get 请求下载“文档”,即“link_mh6f7d3.db”。

{“id”:5,“file_name”:“sqlite3”,“file_descripton”:“上传sqlite3转储文件”,“完成”:true,“upload_time”:“2017-05-08T12:57:59.457859Z”,“文件”:“ http://xxx.xxx.x.xx:9000/media/Documents/link_mh6f7d3.db ”},

目前我要求这样:

http://127.0.0.1:8000/media/Documents/link_O1JBJGR.db [但这不安全]

请对这个话题有所了解。

谢谢, 沙什

0 投票
2 回答
10983 浏览

django - Django rest 框架 JWT 和自定义身份验证后端

我有一个自定义用户模型并创建了一个自定义身份验证后端。我正在使用django rest frameworkdjango rest framework JWT进行令牌身份验证。

用户型号:

身份验证后端:

并在settings.py中添加:

在登录 django 管理站点时,电子邮件和手机号码都可以很好地验证用户身份。但是,当我尝试使用django rest framework JWT为用户获取令牌时,出现错误:

我还在 Rest 框架的默认身份验证中添加了自定义身份验证后端类,但它仍然无法正常工作:

我错过了什么?为什么它在登录到 django 管理站点时工作,但在使用 django rest framework jwt 获取令牌时出错?

更新

我按照建议制作了另一个身份验证后端并将其添加到 中DEFAULT_AUTHENTICATION_CLASSES,但即使这样也不起作用。

设置:

更新

args将auth 类中的从usernameto更改为email似乎可以获取,auth_token但再次无法登录到管理站点。

0 投票
0 回答
2350 浏览

python - Django Rest Framework JWT - 仅在第一次尝试时出现“错误解码签名”

正如您可能从标题中看出的那样,我遇到了rest_framework_jwt的问题。

奇怪的是,在验证并收到我的令牌之后,如果使用该令牌发出后续请求,我会收到 401 Permission Denied:“错误解码签名”。我已将其追踪到 jwt python 库中的 jwt.decode() 引发的异常,并且 JWT 设置中的任何变化都无法解决该问题。

下次我发出请求(相同的 url,我只是在我的应用程序中点击刷新)时,我得到了正确的验证,并且收到了正确的响应。

更奇怪的是,使用https://jwt.io/和我的 settings.SECRET_KEY,我可以验证我的签名!所以我知道它是有效的。

有什么想法吗?

0 投票
1 回答
1265 浏览

python - 使用 Django REST 框架更新 USERNAME_FIELD 时如何处理令牌

我正在使用 Django REST Framework 和 Angular 4 开发应用程序。
我不知道 UPDATE 登录用户信息时对令牌的处理。

Django的用户模型定制如下。
登录密钥从用户名更改为电子邮件。

[模型.py]

从 Angular 4 更新用户信息的功能实现如下。
使用函数 updateUserInfo 将新用户信息放入 Django REST 框架中。

[组件.ts]

[服务.ts]

Django中更新用户信息的视图和序列化器如下。

[视图.py]

[序列化程序.py]

现在发生的问题是更新电子邮件时的行为。
因为 USERNAME_FIELD 是电子邮件,所以更新电子邮件必须更新前端持有的令牌。
但我不知道如何通过新电子邮件获取令牌。

0 投票
0 回答
534 浏览

django - 需要明确使用 django-rest-framework-jwt 和 django-rest-auth 进行社交登录

我可以django-rest-auth按照他们在文档中的说明从他们那里接收 facebook 身份验证 access_token ,但它看起来不像是由django-rest-framework-jwt. 我确实REST_USE_JWT = True进去了settings.py。这就是我所做的一切,我不确定是否需要做任何其他事情来确保令牌是由 JWT 生成的。我设置了一个端点来验证 jwt 令牌,如下所示:

这就是我测试此端点是否收到访问令牌的方式

是一个有效的 JWT 令牌。当我尝试验证令牌时出现错误Error decoding signature

在旁注中,我注意到当我尝试使用 Facebook 登录返回的相同请求两次POST向API 端点发出请求时,我收到了来自 django 的请求。rest-auth/facebook/access_token403 Forbidden

有人可以解释一下如何使 JWT 与 django-rest-auth 一起工作吗?

0 投票
1 回答
7482 浏览

python - Django DRF 更新用户

我正在尝试使用 Django-Rest-Framework (DRF) 创建一个 api 来对用户进行 CRUD。我设法创建并读取了一个用户,但由于某种原因更新不起作用。似乎它正在尝试创建用户而不是更新它,因为它以“用户名已存在”错误消息进行响应。当我尝试传递尚未在数据库中的电子邮件时,它只会创建一个新用户。有谁知道为什么会这样?

这是我的用户序列化器:

这是我的观点: