问题标签 [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.
python - Flask 中的内部重定向
简而言之:
通过仅使用Flask 微框架(及其依赖项),我们可以执行从一条路由到另一条路由的内部重定向吗?
例如:
- 用户提交注册表(
username
和password
)提交给@app.route('/register', methods=['POST'])
- 如果注册成功,Flask 内部会做一个 HTTP POST 来
@app.route('/login', methods['POST'])
传递username
和password
- 处理并登录用户
细节:
我正在使用Flask和Flask-JWT扩展构建一个 REST API。更具体地说,我正在实施登录和注册。
登录完美运行并返回带有令牌的 JSON 对象。
以下是我的(登录)身份验证处理程序(即/auth
(POST 请求)- 默认 Flask-JWT 身份验证 URL 规则):
登录成功返回:
以下是我的注册路线:
flask - Flask-jwt 和 Flask-resftul 错误处理
我正在使用flask-jwt和flask-restful
这就是 flask-jwt 处理错误的方式(取自其 github 存储库),但它们都没有让我获取 JWTError 的参数。
以下是我尝试处理 JWTError 的不同方式
在烧瓶中:
在烧瓶中(handle_error)
在烧瓶中(error_router)
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 似乎正在做的。
感谢您提供任何人都可以提供的见解!
flask - 更改密码时如何防止使用旧的flask-jwt令牌
我是使用 JWT 和 flask-jwt 的新手。我在我的项目中实现了 flash-jwt。即使我更改了用户密码,从 flask-jwt 收到的访问令牌也不会过期。那么如何防止使用旧的 flask-jwt 令牌。
python - Flask-restful API 授权。在装饰器中访问 current_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
装饰器中访问?在烧瓶中进行授权的正确方法是什么?
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 的某个地方。
- werkzeug
EnvironBuilder
将数据解释为 astr
并将其转换为BytesIO
流 - 我不知道这是否是预期的。 - 我已经尝试将数据作为 string:
data="{'username': 'jackripper@example.com', 'password': 'password'}"
和 dict: 发布data={'username': 'jackripper@example.com', 'password': 'password'}
,但似乎没有什么区别。
所以,我的问题是:如何在单元测试中将 JSON 发布到端点Flask.test_client()
?我错过了一些明显的东西吗?
python - Flask-JWT 的认证 url 的 APIdoc
我已经开始使用apidoc
生成 REST api 文档。我用它尝试了不同的东西。
在我flask
基于 api 的应用程序中,我使用JWT
(特别是 flask-jwt)进行身份验证。文档被正确生成,但来自文档的请求没有正确发生。
这是我放置docsting
用于生成文档的地方
当我生成文档时,它会正确生成
- 但是当我从生成的文档中传递凭据时,请求失败。我在烧瓶的请求中得到的请求数据是
''
(空的) Content-Type
即使在文档字符串中包含标题后,它也会失败。我在烧瓶的请求中得到的请求数据是username=test@example.com&password=test123
我已经通过在 Flask-JWT 的代码中添加调试点来确认上述内容
但是,当我使用postman
它提出相同的请求时,它会正确发生。
我错过了什么?
angularjs - Flask jwt auth 端点返回 400
我目前正在创建一个小型应用程序并遇到了问题。我正在使用烧瓶 jwt 模块,以便用户检索令牌以便能够访问在 python 中公开的 api。我正在使用 angularjs 进行前端开发。当我尝试登录我的 api 所在的服务器时,返回 400 错误
根据文档,我所要做的就是将我的凭据传递给身份验证端点,我应该能够取回一个令牌,如页面所示:https ://pythonhosted.org/Flask-JWT/
这是我当前的应用服务器实现:
这是我的 angularjs 实现:
我在运行我的 python 代码的服务器上设置了调试模式,它返回 400
python - 用户对象不可调用
我目前正在使用 flask-jwt 库https://github.com/mattupstate/flask-jwt和 flask-sqlalchemy。当我在标头中传递我的身份验证令牌时,我收到一条错误消息User object is not callable
。我已按照此处给出的示例https://pythonhosted.org/Flask-JWT/切换模型以换取 sqlalchemy 模型。示例代码返回 User 对象,但是当我切换到 sqlalchemy 时它会抱怨。
这是我的模型:
它在这里失败了:
我可以看到正在打印的有效负载和用户,这是输出: