问题标签 [flask-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 回答
22948 浏览

python - Flask 中的内部重定向

简而言之:

通过仅使用Flask 微框架(及其依赖项),我们可以执行从一条路由到另一条路由的内部重定向吗?

例如:

  1. 用户提交注册表(usernamepassword)提交给@app.route('/register', methods=['POST'])
  2. 如果注册成功,Flask 内部会做一个 HTTP POST 来@app.route('/login', methods['POST'])传递usernamepassword
  3. 处理并登录用户

细节:

我正在使用FlaskFlask-JWT扩展构建一个 REST API。更具体地说,我正在实施登录和注册。

登录完美运行并返回带有令牌的 JSON 对象。

以下是我的(登录)身份验证处理程序(即/auth(POST 请求)- 默认 Flask-JWT 身份验证 URL 规则):

登录成功返回:

以下是我的注册路线:

0 投票
1 回答
3760 浏览

python - flask-jwt 如何处理一个令牌?

我是使用 JWT 和 flask-jwt 的新手,所以我运行了我在文档中找到的示例。我阅读这篇文章是为了更好地理解 JWT。

但现在我想知道我应该如何处理多个令牌?我的意思是,用户将他的凭据发布到“myserver/auth”,然后将令牌返回给客户端。当客户端发送新请求时,他应该发送令牌。

我的问题是我如何知道哪个“令牌”属于哪个用户以及“令牌”存储在哪里?

0 投票
1 回答
2077 浏览

flask - Flask-jwt 和 Flask-resftul 错误处理

我正在使用flask-jwtflask-restful

这就是 flask-jwt 处理错误的方式(取自其 github 存储库),但它们都没有让我获取 JWTError 的参数。

以下是我尝试处理 JWTError 的不同方式

在烧瓶中:

在烧瓶中(handle_error)

在烧瓶中(error_router)

0 投票
1 回答
4343 浏览

rest - 通过 Flask-JWT REST API 使用 Flask-Security 角色

我正在构建一个基于 Flask 的 REST API 并使用 Flask-JWT 来处理 JWT 身份验证。我还想使用 Flask-Security 的内置角色管理。但是,Flask-Security 的 @roles_required() 装饰器假定我在失败时显示 Flask 视图。

这是我的令牌端点(按我的意愿工作):

这是对没有任何角色要求的资源的成功响应(仅使用@jwt_required)这也可以按我的意愿工作:

当我对具有所需角色的资源(例如本例中的管理员)执行相同操作时,似乎假设我有一个要显示的页面,例如 /login,但我没有,因为它是一个无头 REST API:

我知道 Flask-Security 在幕后使用 Flask-Principal 进行角色管理(@roles_required 等),它与数据存储区的 RoleMixin 和 UserMixin 相关联,这非常好。但是,如果没有办法让 Flask-Security 只允许资源通过而不使用我的 JWT 标头,那么最好的选择是构建我自己的装饰器,它使用 Flask-Principal 来管理角色。

有人对这个有经验么?这个想法是整个前端可以并且将以我们需要的任何语言构建,这意味着它可能不是 Flask 的模板/视图,而 Flask-Security 似乎正在做的。

感谢您提供任何人都可以提供的见解!

0 投票
3 回答
919 浏览

flask - 更改密码时如何防止使用旧的flask-jwt令牌

我是使用 JWT 和 flask-jwt 的新手。我在我的项目中实现了 flash-jwt。即使我更改了用户密码,从 flask-jwt 收到的访问令牌也不会过期。那么如何防止使用旧的 flask-jwt 令牌。

0 投票
3 回答
20539 浏览

python - Flask-restful API 授权。在装饰器中访问 c​​urrent_identity

我使用 flask-restful 来创建我的 API。我已用于flask-jwt启用基于JWT. 现在我需要做授权。

我试过把我的授权装饰器。

test.py (/测试 api)

基本上要处理基本授权,我需要访问current_identity并检查它的类型。然后根据它的类型,我将决定用户是否有权访问 api / 资源。

current_identity似乎empty在那个装饰器中。因此,为了间接获得它,我必须查看代码jwt_handler并在那里完成工作。

授权助手.py

为什么我不能只current_identity在我的authorized_api_user_type装饰器中访问?在烧瓶中进行授权的正确方法是什么?

0 投票
1 回答
3276 浏览

python - 在单元测试中将 JSON 发布到 Flask 端点时出现错误请求

我发现了很多关于人们试图将 JSON 发布到 Flask 应用程序的问题,但这些都不是我在这里遇到的问题。

我有一个简单的 REST API,使用 Flask 和 Flask-JWT 构建,它在浏览器中运行良好,但我的单元测试遇到了障碍。该应用是 App Engine 应用,在本地开发服务器和 App Engine 上运行良好。我正在运行我的单元测试python -m unittest <module>

我有一个使用简单工厂创建的基本 Flask 应用程序:

在上面,JWT期望一个authentication_handler,我已经实现了:

我的客户是 Angular.js,所以我将 JSON 发布到这个端点。这在浏览器或 curl 中都可以正常工作:

200 OK在响应中给我一个和一个访问令牌。

我的简单测试用例是这样的:

普通的旧GET测试 ( testRoute()) 工作得很好,但testAuth()给了我一个400 Bad Request,我不知道为什么。

如果我在将请求发送到我的 Flask 应用程序之前立即查看werkzeug ,我会看到: environ

因此,内容类型设置正确,如果我阅读wsgi.input( BytesIO.getvalue()) 的内容,我会看到{'username': 'jackripper@example.com', 'password': 'crm114'}

该请求似乎在到达my之前auth_handler就在某个地方失败了,所以在 werkzeug 或 Flask 的某个地方。

  • werkzeugEnvironBuilder将数据解释为 astr并将其转换为BytesIO流 - 我不知道这是否是预期的。
  • 我已经尝试将数据作为 string:data="{'username': 'jackripper@example.com', 'password': 'password'}"和 dict: 发布data={'username': 'jackripper@example.com', 'password': 'password'},但似乎没有什么区别。

所以,我的问题是:如何在单元测试中将 JSON 发布到端点Flask.test_client()?我错过了一些明显的东西吗?

0 投票
0 回答
481 浏览

python - Flask-JWT 的认证 url 的 APIdoc

我已经开始使用apidoc生成 REST api 文档。我用它尝试了不同的东西

在我flask基于 api 的应用程序中,我使用JWT(特别是 flask-jwt)进行身份验证。文档被正确生成,但来自文档的请求没有正确发生。

这是我放置docsting用于生成文档的地方

当我生成文档时,它会正确生成

  1. 但是当我从生成的文档中传递凭据时,请求失败。我在烧瓶的请求中得到的请求数据是''(空的)
  2. Content-Type即使在文档字符串中包含标题后,它也会失败。我在烧瓶的请求中得到的请求数据是username=test@example.com&password=test123

我已经通过在 Flask-JWT 的代码中添加调试点来确认上述内容

但是,当我使用postman它提出相同的请求时,它会正确发生。

邮递员标头 在此处输入图像描述

Apdoc 标头 在此处输入图像描述

我错过了什么?

0 投票
1 回答
366 浏览

angularjs - Flask jwt auth 端点返回 400

我目前正在创建一个小型应用程序并遇到了问题。我正在使用烧瓶 jwt 模块,以便用户检索令牌以便能够访问在 python 中公开的 api。我正在使用 angularjs 进行前端开发。当我尝试登录我的 api 所在的服务器时,返回 400 错误

根据文档,我所要做的就是将我的凭据传递给身份验证端点,我应该能够取回一个令牌,如页面所示:https ://pythonhosted.org/Flask-JWT/

这是我当前的应用服务器实现:

这是我的 angularjs 实现:

我在运行我的 python 代码的服务器上设置了调试模式,它返回 400

0 投票
0 回答
1184 浏览

python - 用户对象不可调用

我目前正在使用 flask-jwt 库https://github.com/mattupstate/flask-jwt和 flask-sqlalchemy。当我在标头中传递我的身份验证令牌时,我收到一条错误消息User object is not callable。我已按照此处给出的示例https://pythonhosted.org/Flask-JWT/切换模型以换取 sqlalchemy 模型。示例代码返回 User 对象,但是当我切换到 sqlalchemy 时它会抱怨。

这是我的模型:

它在这里失败了:

我可以看到正在打印的有效负载和用户,这是输出: