问题标签 [flask-jwt-extended]

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

python - Flask 应用不注册 jwt.user_lookup_loader,Flask-JWT-Extended

我有一个带有蓝图的 Flask 应用程序。它工作得很好,但我决定用它flask_jwt_extended来处理令牌。在文档中说我可以用它来装饰方法jwt.user_lookup_loadercurrent_user工作。但由于某种原因,调用current_user最终会出现错误:

但它就在那里,在同一个蓝图中。还有一种方法,用@jwt.user_identity_loader它装饰,效果很好。这是我的代码的简化版本:

jwt 这里是 JWTManager,用我的应用程序初始化:

此代码基本上来自文档示例:

https://flask-jwt-extended.readthedocs.io/en/stable/automatic_user_loading/

而且我看不出问题可能是什么(

链接到回购: https ://github.com/GreenBlackSky/COIN/blob/master/api_app/app/login_bp.py

0 投票
0 回答
279 浏览

python - Flask:使用 cookie 自动刷新访问令牌

我正在使用烧瓶和刷新/访问令牌构建应用程序。如果访问令牌即将过期,我将负责刷新访问令牌。

关于文档:https ://flask-jwt-extended.readthedocs.io/en/stable/refreshing_tokens/#implicit-refreshing-with-cookies

有此代码可以自动刷新身份验证令牌:

这里的问题是没有使用刷新令牌(但根据我对文档的理解,这是刷新令牌的目标)。

所以我尝试添加这个函数的装饰器:

那么只有在 cookie 中有刷新令牌时,我们才能刷新我们的访问令牌。

问题是我在登录前有一个问题:当你第一次访问网站时,你需要登录,所以你没有刷新令牌,并且因为上面的代码是完成@app.after_request,所以它会失败,因为用户在 cookie 中仍然没有刷新令牌。要知道将上面的脚本与我的新装饰器一起保存,我的代码中有这个错误:

和网站返回内部错误

所以我想要的不是在每个请求之后都执行这个脚本,而只是在请求访问一个秘密之后(带有@jwt_required的函数)

也许这不是正确的方法,所以如果你有更好的解决方案,我会接受。

谢谢

0 投票
0 回答
486 浏览

python-3.x - 如何在 Angular 8 中访问响应标头和 Cookie

我正在尝试csrf_access_token作为我的 PUT 请求的一部分发送。当我登录时,我正在生成访问令牌并将其作为我的 cookie 的一部分发送。因此,我需要从 cookie 中获取令牌并将其作为标头的一部分发送,X-CSRF-TOKEN以验证我的 PUT 请求。当我登录时,我可以看到标题为

我正在尝试获取 Set-Cookie 标头及其值。首先我尝试ngx-cookie-service使用this.cookieservice.get('Set-Cookie'),但它没有用,我得到了 null 作为输出。在调查之后,我发现我需要公开这些标题,因为它们没有被列入安全列表。所以在我的服务器端,我添加了 CORS 配置

我仍然没有得到这些价值观。即使在做之后this.cookieservice.getAll(),我也只得到一个空对象。我Flask用于服务器端和flask_jwt_extended授权。

0 投票
1 回答
323 浏览

nginx - Flask-JWT-Extended set cookies with double submit cookie 方法,防止 HTTP-only cookie

我正在为我的 Flask 后端和 React 前端使用 Flask-JWT-Extended 和双重提交 cookie 方法。因此,当用户从前端登录时,后端总共设置了 4 个不同的 cookie:csrf_access_token, csrf_refresh_token, access_token_cookie, refresh_token_cookie. 在这 4 个 cookie 中,access_token_cookieandrefresh_token_cookie应该是HTTPonlycookie,因此 JS 无法访问,csrf_access_token并且csrf_refresh_tokennon-HTTPonlycookie。所以这里的想法是HTTPOnlycookie用CSRF令牌保存用户的会话信息,non-HTTPonlycookie保存CSRF令牌,当发出POST请求时,JS访问的CSRF令牌与其他cookie一起发送到后端。

这在我的开发环境中工作得很好,其中两个 cookie 可以通过 JavaScript 访问,因此我可以使用 Truecsrf_acccess_token与请求一起发送withCredentials,但是当我使用 Nginx(后端和前端)将它部署到带有 TLS 的测试环境时,它正在将所有 4 个 cookie 设置为HTTPOnlycookie,因此,我无法发出任何 POST 请求。

我不确定这是否是由 引起的Nginx,但据我所知,我看不到很多选项可以关闭HTTPOnly从后端注册的 2 个 cookie。

下面是我的配置flask-jwt-extended

任何建议将不胜感激!

0 投票
0 回答
60 浏览

flask - flask_jwt_extended 刷新令牌的接收错误

我正在尝试在 flask_jwt_extended 中实现刷新令牌系统,我遵循了官方文档。当我尝试使用 postman 使用 refresh_token 获取新的 access_token 时,我得到了带有新访问令牌的响应。但是当我尝试使用 axios 调用时,它会抛出 401 错误说:

以下是我的 axios 调用:

axios api调用:

我在前端使用来自 Vuejs 的 Vuex 商店。

0 投票
0 回答
52 浏览

javascript - 使用 Javascript 为 Flask 应用程序创建 HTTP 标头(JWT 扩展)

我正在创建一个 Flask Web 应用程序,对于身份验证和表单,我使用 JWT-Extended 包,特别是使用 cookie。当我使用 @jwt_required() 装饰路由(POST 方法)并从我的 HTML 表单中将值发送到路由时,装饰不允许执行该函数。我已经阅读了 JWT-Extended 文档,它推荐了一个 JavaScript 脚本(https://flask-jwt-extended.readthedocs.io/en/stable/token_locations/#cookies),它创建了一个 X-CSRF-TOKEN 标头用于发送 POST 请求。

不幸的是,这在我的代码中不起作用。我该如何解决?或仅使用 javascript 来适应我的代码,因为我还不知道任何 javascript 框架。谢谢。

这是我在 Flask 中的部分代码:

0 投票
1 回答
175 浏览

javascript - 烧瓶 jwt 扩展刷新令牌的抛出错误

我正在尝试在 flask_jwt_extended 中实现刷新令牌系统,我遵循了官方文档。当我尝试使用 postman 使用 refresh_token 获取新的 access_token 时,我得到了带有新访问令牌的响应。但是当我尝试使用 axios 调用时,它会抛出 401 错误说:

我的烧瓶代码:

以下是我的 axios api 调用:

axios api调用:

0 投票
1 回答
298 浏览

flask - 如果使用 Flask-jwt-extended 的请求中未显示 jwt,如何重定向

如果用户没有 JWT 或使用了错误的 JWT,是否有内置方法重定向到登录页面?

0 投票
0 回答
145 浏览

python - 使用 Flask JWT Extended API 请求控制和 webapp 登录

我正在开发一个 API(Flask/Python),它将接收来自应用程序(React-Native)和一个 Webapp(Flask/Python)的请求。对于某些 API 请求,有必要进行用户访问控制。为此,我正在使用 JWT(Flask-JTW-Extended)进行身份验证。为了接收令牌,webapp 后端在路由 /auth/login-with-cookies 上向 API 发布一个带有电子邮件和密码的请求:

如果数据正常,API(使用 set_access_cookies 函数)将令牌作为 cookie 返回。

问题:如何从 API 获取响应并在 webapp 上设置用户登录(它还具有对某些视图的访问控制)。来自 API 的 cookie 是否已存储在客户端(浏览器)上?

0 投票
2 回答
571 浏览

python - Flask JWT:没有 @jwt_required 的 get_jwt_identity() 总是返回 Non

我正在构建一个 Flask JWT 扩展应用程序,这就是我想要做的:

我有对所有人开放的端点(即没有装饰器@jwt_required,每个人都可以访问链接)

但是如果有人通过身份验证访问此链接,我希望能够取回他的身份,例如:

问题是没有装饰器, get_jwt_identity 总是返回 None

有没有办法做到这一点?

谢谢