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

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 回答
107 浏览

rest - 在 JWT 的情况下,SPA 和移动应用程序是否会针对同一端点进行身份验证?

我正在制作一个 REST 服务器,它将同时具有单页应用程序形式的 Web 客户端和本机移动应用程序形式的 Web 客户端。我正在研究使用 JWT 使服务器无状态。到目前为止,我的理解是:

  1. 身份验证端点在提供正确的凭据后返回两个令牌,即访问令牌和刷新令牌。
  2. 出于安全原因,这些令牌应存储在浏览器上的“httpOnly”cookie 中。

据我所知,本机移动应用程序没有 cookie 存储,因此它们有一些其他数据存储用于应用程序,例如数据库。那么,我是否需要为这些不同的应用程序实现两个不同的端点?我想做的是:

  1. 端点 1(对于单点应用程序):接受 json 中的用户凭据并在 cookie 中返回 jwt
  2. 端点 2(对于本机移动应用程序):接受 json 中的用户凭据并返回原始 json 正文中的 jwt。

上述方法是否正确,或者我们对它们都有一个端点。还可以帮助如何使用 django-rest-framework-simplejwt 实现这一目标。

0 投票
4 回答
4130 浏览

django - Django Rest Framework 避免身份验证 JWT

我正在使用rest_framework_simplejwt对我的用户进行身份验证,但是在某些视图中我需要忽略它,因为这些是公共视图。我想将令牌检查到视图流中。预期的行为是:

在公众视野中

  • 避免令牌验证:如果有过期或无效的令牌,忽略它并让我在 APIView 中验证它

实际上rest_framework_simplejwt检查令牌并401在令牌无效或过期时引发......

我尝试authentication_classes像这样在 APIView 中禁用:

但是如果我在输入GET APIView方法之前禁用它,我不能这样做,if reques.user.is_authenticated:因为我禁用了令牌:(

是否存在一种方法可以输入 api http 方法并手动检查用户进入视图?谢谢

0 投票
1 回答
2515 浏览

django - 使用 SimpleJWT 登录时的 AnonymousUser

我知道这不是第一个此类问题,但其他主题对我没有帮助。我想使用 djangorestframework-simplejwt 对用户进行身份验证,一切都很好,因为它涉及到获取用户。我总是得到匿名用户。

我通过访问 api/token 并传递凭据来获取令牌。令牌已正确创建,它包含正确的用户 ID。当我尝试访问受保护的视图时,它允许我这样做,但 Django 无法识别用户。

设置.py

views.py """帐户应用程序的视图。"""

我相信这是显而易见的,因为我几天前开始学习 drf,但数小时的搜索谷歌并没有帮助。

0 投票
0 回答
219 浏览

django - 动态 USERNAME_FIELD djangorestframework 和 simplejwt

我正在开发一个身份验证应用程序,用户可以通过该应用程序登录

使用的框架/库

我正在尝试在生成的 jwt 令牌中添加多个声明。

下面是我的 LoginView 和 LoginSerializer。

看法

串行器

但是在请求中发送有效的电话号码和密码时,我收到电子邮件不能为空白错误。这是因为 TokenObtainPairSerializer 会检查 User.USERNAME_FIELD (在我的情况下是电子邮件。)

我该如何处理这种情况或让它发挥作用?

0 投票
1 回答
424 浏览

django - 手动触发 django-simpleJWT 身份验证

我正在尝试重新利用django-rest-framework-simplejwt以完全不同的方式进行身份验证(电话号码和短信验证码在两个不同的请求中)。问题是我已经开发了所有东西,但是由于这个身份验证系统在项目中的紧密集成,我必须手动触发 TokenObtainPairView,这样用户仍然会收到令牌并在系统中进行身份验证。

有什么办法可以做到吗?我考虑过手动触发视图,但这不起作用,因为即使我为该视图自定义序列化程序,我也无法覆盖用户的标准用户名/密码(用户没有密码并且用户名是随机的)

关于如何做到这一点的任何想法?

我目前的代码是这样的:

0 投票
0 回答
504 浏览

django - DRF - JWT 如何修复令牌过期后仍然有效?

我正在将 Djangorestframework 与 djangorestframework-simplejwt 库一起使用,令牌系统正在工作,除了在访问和刷新令牌都过期后(我可以通过邮递员确认),前端应用程序(Vue 和 axios)仍然能够获取更新的数据, 这怎么可能?当我检查 axios 请求时,令牌与我在邮递员中使用的令牌相同,在邮递员中它给我“令牌无效或过期”但在 axios 中它接收所有数据并 200 OK。

这些是配置:

0 投票
2 回答
333 浏览

django - DRF:从 API 自定义异常消息

最近我开始更深入地研究 DRF,我想开始自定义通过 API 返回的错误消息以获得不正确的权限,我想包装一些额外的细节。

例如,如果没有为权限受限的端点提供身份验证凭据,API 将返回:

它来自第 171 行rest_framework.exceptionshttps ://github.com/encode/django-rest-framework/blob/master/rest_framework/exceptions.py 。真的,我希望这与

所以,我假设我现在需要开始自定义我自己的异常。

我应该如何最好地做到这一点?

也许它与default_error_messages = {}序列化程序内部有一些联系......

0 投票
0 回答
213 浏览

django - 使用 JWT 身份验证登录后重定向

我正在使用这个库django-rest-framework-simplejwt并希望在成功获取令牌后能够重定向到端点。

我有一个从文档中获取令牌的标准实现

有没有办法改变TokenObtainPairView函数的操作以重定向到端点?

0 投票
4 回答
2135 浏览

python - 删除特定 url 路径的身份验证和权限

我正在与 DRF 合作并遇到了这个问题。我有一个第三方视图,我将其导入到我的urls.py文件中,如下所示:

但我面临的问题是因为我已经启用了默认权限类,settings.py如下所示:

现在,当我使用 url 调用该视图时,它给了我身份验证错误,因为我没有提供令牌。有没有办法可以绕过身份验证错误而无需直接在视图中进行更改,我知道我们可以删除该权限特定视图,但为此我必须更改该some_view功能代码。但我不想这样做,假设我们无权访问该功能,我们只能传递数据并接收响应。如何绕过身份验证而不必更改该功能代码。我尝试搜索,但找不到我要找的东西。

我假设我们可以通过某种方式从 urls.py 中做到这一点,例如指定任何参数或类似的东西,使特定视图绕过身份验证而无需更改函数代码。

像这样的东西:

我正在寻找的可能吗?提前致谢 :)

0 投票
1 回答
302 浏览

django - rest_framework_simplejwt 发布到 APIView

我有这个设置:

而这个观点:

使用 axios 我管理我的 api 调用,例如:

现在的问题是,我无法发布数据。我收到未经授权的(401) 错误,并在响应消息中显示:{"detail":"Authentication credentials were not provided."}

你能告诉我,我在这里缺少什么,我该如何解决这个问题?