问题标签 [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.
python - Flask 应用不注册 jwt.user_lookup_loader,Flask-JWT-Extended
我有一个带有蓝图的 Flask 应用程序。它工作得很好,但我决定用它flask_jwt_extended
来处理令牌。在文档中说我可以用它来装饰方法jwt.user_lookup_loader
来current_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
python - Flask:使用 cookie 自动刷新访问令牌
我正在使用烧瓶和刷新/访问令牌构建应用程序。如果访问令牌即将过期,我将负责刷新访问令牌。
有此代码可以自动刷新身份验证令牌:
这里的问题是没有使用刷新令牌(但根据我对文档的理解,这是刷新令牌的目标)。
所以我尝试添加这个函数的装饰器:
那么只有在 cookie 中有刷新令牌时,我们才能刷新我们的访问令牌。
问题是我在登录前有一个问题:当你第一次访问网站时,你需要登录,所以你没有刷新令牌,并且因为上面的代码是完成@app.after_request,所以它会失败,因为用户在 cookie 中仍然没有刷新令牌。要知道将上面的脚本与我的新装饰器一起保存,我的代码中有这个错误:
和网站返回内部错误
所以我想要的不是在每个请求之后都执行这个脚本,而只是在请求访问一个秘密之后(带有@jwt_required的函数)
也许这不是正确的方法,所以如果你有更好的解决方案,我会接受。
谢谢
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
授权。
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_cookie
andrefresh_token_cookie
应该是HTTPonly
cookie,因此 JS 无法访问,csrf_access_token
并且csrf_refresh_token
是non-HTTPonly
cookie。所以这里的想法是HTTPOnly
cookie用CSRF令牌保存用户的会话信息,non-HTTPonly
cookie保存CSRF令牌,当发出POST请求时,JS访问的CSRF令牌与其他cookie一起发送到后端。
这在我的开发环境中工作得很好,其中两个 cookie 可以通过 JavaScript 访问,因此我可以使用 Truecsrf_acccess_token
与请求一起发送withCredentials
,但是当我使用 Nginx(后端和前端)将它部署到带有 TLS 的测试环境时,它正在将所有 4 个 cookie 设置为HTTPOnly
cookie,因此,我无法发出任何 POST 请求。
我不确定这是否是由 引起的Nginx
,但据我所知,我看不到很多选项可以关闭HTTPOnly
从后端注册的 2 个 cookie。
下面是我的配置flask-jwt-extended
任何建议将不胜感激!
flask - flask_jwt_extended 刷新令牌的接收错误
我正在尝试在 flask_jwt_extended 中实现刷新令牌系统,我遵循了官方文档。当我尝试使用 postman 使用 refresh_token 获取新的 access_token 时,我得到了带有新访问令牌的响应。但是当我尝试使用 axios 调用时,它会抛出 401 错误说:
以下是我的 axios 调用:
axios api调用:
我在前端使用来自 Vuejs 的 Vuex 商店。
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 中的部分代码:
javascript - 烧瓶 jwt 扩展刷新令牌的抛出错误
我正在尝试在 flask_jwt_extended 中实现刷新令牌系统,我遵循了官方文档。当我尝试使用 postman 使用 refresh_token 获取新的 access_token 时,我得到了带有新访问令牌的响应。但是当我尝试使用 axios 调用时,它会抛出 401 错误说:
我的烧瓶代码:
以下是我的 axios api 调用:
axios api调用:
flask - 如果使用 Flask-jwt-extended 的请求中未显示 jwt,如何重定向
如果用户没有 JWT 或使用了错误的 JWT,是否有内置方法重定向到登录页面?
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 是否已存储在客户端(浏览器)上?
python - Flask JWT:没有 @jwt_required 的 get_jwt_identity() 总是返回 Non
我正在构建一个 Flask JWT 扩展应用程序,这就是我想要做的:
我有对所有人开放的端点(即没有装饰器@jwt_required,每个人都可以访问链接)
但是如果有人通过身份验证访问此链接,我希望能够取回他的身份,例如:
问题是没有装饰器, get_jwt_identity 总是返回 None
有没有办法做到这一点?
谢谢