问题标签 [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 投票
0 回答
2435 浏览

python - Django Rest Framework 的 @api_view 装饰器的使用和神秘的 bug

我遇到了这个奇怪的错误,我的代码昨天运行良好(通过自动化测试)但今天就坏了。基本上,感觉好像@api_view 装饰器坏了,无法申请一个方法。情况如下:

我有一个名为“advance_orders”的方法,它的包装如下:

注意: hack=True 是我在第一次发现错误后为调试目的而添加的一个小功能。

这些方法在这里@check_wallet_token@disallow_disabled_users无关紧要,我 99.99% 确定它们不是错误的来源(因为它们昨天工作罚款和在/在其他类似包装的方法中)

到函数的 url 映射是: re_path(r'^vendor/orders/advance/$', vendor.advance_orders, name='advance_order'),

现在,在某个测试中,我有:

测试失败并在打印我发现的响应文本时: {"detail":"Method \"POST\" not allowed."}

这没有任何意义!除非我做错了什么,我很确定我不是。

++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++

现在是我收集更多证据的时候了。我进入安装在我的虚拟环境中的 DRF 的源代码并修改两种方法以打印出额外的调试信息。

在views.py中我改变views.APIView.dispatch()如下:

我修改的另一种方法是decorators.api_view()

./manage.py test Wallet.tests.test_api_vendors.API_VendorTestCase --failfast 现在我使用并打印我们的结果来运行我的测试:

这让我非常困惑,因为这意味着装饰器认识到我想要允许“POST”方法,但是当我的视图“advance_order”被执行时,“POST”不包含在允许的方法列表中。

所以我的问题是:是我的错误吗?如果是这样,怎么做?否则,我能做些什么来解决这样的问题?(删除 __pycache__ 文件不起作用)。

PS为这个非常冗长的问题道歉,我只想非常清楚我的问题。

0 投票
1 回答
865 浏览

django - 获取使用 JWT 返回的用户 ID

早上好,

我正在编写我的第一个 DRF API,并且正在使用 django-rest-framework-jwt ( https://getblimp.github.io/django-rest-framework-jwt/ ) 来处理 JWT 身份验证。

我目前正在使用内置视图:

但需要将一些用户信息返回给 UI(VueJS)。我想将用户 ID 和名称信息存储到 Vuex 存储中,以传递给后续 API 调用并呈现给用户(“Hello Jim!”)。

我发现这个讨论为 jwt 有效负载响应添加自定义函数: jwt rest framework return user id with token

我不确定在哪里做这个虽然......

感谢您帮助澄清。

BCBB

0 投票
1 回答
2421 浏览

reactjs - 我需要在客户端检查 JWT 过期吗?

我正在使用 Django REST 框架、react 和 redux 开发网站,例如分类广告。我有一个关于 JWT 身份验证的问题。我想使用 djangorestframework_simplejwt 进行身份验证,并且我检查了一些教程。我看到很多教程都在客户端检查访问令牌,如下所示

并刷新令牌。但我不知道为什么。因为每次我们收到带有过期访问令牌的 HTTP 401 Unauthorized 错误时,只需使用刷新令牌请求新的访问令牌。

我认为的工作流程是

  1. 向服务器发送带有访问令牌的请求,以获取只有经过身份验证的用户才能看到的页面。
  2. 如果访问令牌过期,前端将收到 HTTP 401 Unauthorized 错误。
  3. 向服务器发送带有刷新令牌的请求以获取新的访问令牌,然后前端将其存储到 localStorage。
  4. 再次发送请求。

这是不好的方式吗?

我为我糟糕的英语道歉......

0 投票
1 回答
793 浏览

django - Django Rest 框架:JWT 授权失败

我有一个用 Django REST Framework (DRF) 编写的应用程序。此外,还有这样的注册端点:

此外,还有一些端点需要授权。

所以,我正在尝试使用curl客户端提取我的令牌:

它返回如下内容:

然后,使用我想登录的这个令牌,使用令牌:

它返回403 (Forbidden)CSRF 验证失败。请求中止。

为什么我做错了?

这里有一个有趣的点:

对令牌的每个请求都会为同一个用户:密码对返回一个新令牌(是预期的还是我的令牌过期太快)?

0 投票
1 回答
1329 浏览

django - 如何使用 msg.send() 在 django 的 html 电子邮件模板中传递用户名

我是 Django 编码的新手。我目前正在研究 DRF Django Rest Framework 以及 API。我一直在尝试在用户注册后立即发送带有附件的 HTML 电子邮件模板。我已经实现了发送相同的功能,但我想将动态内容(如注册用户的电子邮件)从 views.py 传递到 HTML 电子邮件模板,但无法做到。我正在使用 msg.send()。

在 VIEWS.PY 中:

在 HTML 模板中:

0 投票
1 回答
4030 浏览

django - 从 Django Rest Framework SIMPLE JWT 令牌(第 3 方)获取中间件中的用户名

我正在使用 Django Rest Framework,并且包含了一个名为REST framework simple JWT Auth的第 3 方包,它是引用的新框架,而这个REST framework JWT Auth是旧的(我想象的),因为有很长一段时间没有在 github 上更新,可能不支持较新的版本。

我正在寻找一种方法,例如stackoverflow-3rd answer 上的这个链接,通过中间件获取每个请求的用户信息,以便在需要时通过使用 django 信号在我的模型中应用/保存用户对象. 我检查了文档和互联网,但我没有找到任何东西。因此,如果您已经有这种情况,我将感谢您的帮助。

谢谢

0 投票
1 回答
943 浏览

django - Django rest framework JWT ,删除 jwt 令牌

如何手动使 django rest 框架 JWT 令牌过期?因为它不将令牌存储在数据库中。有没有正确的方法使令牌过期?

我正在考虑继续使用中间件,每个用户都将存储令牌。在每次登录请求时,我们都会为用户更新数据库中的令牌。在每个请求中,我们将从请求中获取令牌并与存储的令牌进行比较,如果不匹配,则我们将返回禁止。我不知道它是否正确!

0 投票
1 回答
3815 浏览

python - 如何从 django restframwork 返回带有 400 bad request status code 的响应消息?

Python Django 中的代码:

javascript中的代码

它在 200 ok 时返回代码,但在 400 错误请求时不返回任何内容。事实上,除了 200_ok 代码之外,似乎没有任何回复消息。有什么解决办法吗?

0 投票
1 回答
459 浏览

python - Django JWT Auth - 过滤特定用户的响应

我正在我的 Django 项目中实现 JWT 身份验证,目前我被困在我想通过我的 JWT 过滤响应数据的部分。

我想在我的 Django 视图中获取涉及经过身份验证的用户的特定数据。我怎样才能得到这个过滤的数据?

这是我的设置视图的示例。

视图.py

网址.py

序列化程序.py

设置.py

}

这是我用来从服务器获取响应的 curl 命令:

作为回应,我得到了所有用户的所有设置。我只想获取经过身份验证的数据。

0 投票
1 回答
830 浏览

python - 自定义 Django Rest JWT 登录

我正在尝试为 django rest api 身份验证编写自定义 jwt 登录视图。但它不起作用,我不知道为什么。你能帮我修复这段代码或举一些例子。提前致谢。

我的序列化器:

我的观点: