- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
登录用户的 token 有效期为 24 小时。在此期间内,所有带有 @jwt_required
装饰器的请求都将当前访问 token 的有效期再延长 24 小时。最大有效期为 168(24 * 7) 小时。
可以使用 access_token 和 refresh_token。
ret = {
'access_token': create_access_token(identity=username, fresh=True),
'refresh_token': create_refresh_token(identity=username)
}
但这意味着来 self 的应用程序的每个 API 调用都将是两个请求:1.实际HTTP请求2.刷新授权 token
@app.route('/refresh', methods=['POST'])
@jwt_refresh_token_required
def refresh():
current_user = get_jwt_identity()
ret = {
'access_token': create_access_token(identity=current_user)
}
return jsonify(ret), 200
有没有办法隐式扩展授权 token ?
最佳答案
编辑:现在这里有关于此的文档:https://flask-jwt-extended.readthedocs.io/en/latest/refreshing_tokens/
这里是 flask-jwt-extended 的作者。从技术上讲,您实际上不能扩展 token ,只能用具有新过期时间的新 JWT 替换它。不过,您可以通过几种方法来模拟这一点。
首先,您可以让服务器本身在每次请求时隐式发回一个新 token ,而不是让客户端请求一个新 token 。您可以在 header 中而不是在 JSON 负载中发送新的 JWT,这样您就不必修改 JSON 数据来说明新 JWT 的可能性。不过,您的客户需要注意这一点,他们需要在每个请求中检查新的 header ,并用新的 header 替换当前的 JWT(如果存在)。您可能会使用 flask after_request 方法来执行此操作,因此您不必将该功能添加到所有端点。将 JWT 存储在 cookie 中可以实现类似的效果,不同之处在于 cookie 会自动存储在您的浏览器中(因此您的客户端不必在每次请求时手动查找它们),并且增加了 CSRF 的复杂性如果你走这条路(http://flask-jwt-extended.readthedocs.io/en/latest/tokens_in_cookies.html),保护。
以上内容应该可以正常工作,但您将创建大量访问 token ,这些 token 在创建后立即被丢弃,这可能并不理想。上面的一个变体是检查 token 是否即将过期(也许它已经过期一半了)并且只有在这种情况下才创建并返回一个新 token 。另一种变体是让客户端检查 token 是否即将过期(通过 javascript),如果是,则使用刷新 token 来请求新的访问 token 。为此,您需要在点 ('.') 上拆分 JWT,base64 解码来自该拆分(索引 1)的第二组字符串,并从那里获取 'exp' 数据。
执行此操作的第二种方法实际上是等待 token 过期,然后使用刷新 token 生成新的访问 token 并重新发出请求(被动而不是主动)。这可能看起来像是发出请求,检查 http 代码是否为 401,如果是,则使用刷新 token 生成新的访问 token ,然后再次发出请求。
希望这有帮助:)
关于python - Flask JWT 在每个请求上扩展 token 的有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46197050/
1. JWT 简介 JSON Web Token(JWT) 是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为 JSON 对象在各方之间安全地传输信息。该信息可以被验证和信
关于JWT(json web token)的一些问题: 可以在手机上使用吗? 在我看来,它适用于移动设备,但它是否是一个很好的身份验证解决方案?如果不是,还有哪些其他解决方案可用于移动应用程序和服务器
我无法清楚地掌握 JWT 是如何工作的,尤其是。签名部分。 一旦客户端提交正确的用户名和密码,身份验证服务器就会创建一个 JWT token ,其中包含 header 、有效负载/声明和签名。 问题
我正在通过 jwt.io(在调试器部分)解码 JWT token 以查看标题、有效负载。令人惊讶的是,它还验证了,我可以看到它(jwt.io 调试器)也能够检索公钥。 所以我的问题是:JWT toke
我尝试使用 validate-jwt 策略限制使用 JWT token 对 REST API 的访问。以前从来没有这样做过。 这是我的入站策略(取自简单 token 验证here):
我们有一个微服务架构,使用 JWT 在服务之间进行身份验证。我希望轻松地从 JWT 中获取更多字段。目前实际上只有权限由 Spring Security 直接公开。 我们的边缘服务/API 网关创建以
我正在尝试在 .NET 中生成 JWT token 。起初,我尝试使用“System.IdentityModel.Tokens.Jwt”,但它在 token 验证期间引起了问题,所以我切换到“jose
我已经阅读了很多关于 stackOverflow 和 jwt 文档的问题。据我了解,现在我应该如何计算 token : header = { "alg": "HS256", "typ": "J
我想知道我可以设置的 JWT token 到期的最大值是多少。 谢谢! 最佳答案 没有关于过期时间的规定。它主要取决于使用 token 的上下文。 RFC7519 section 4 : The se
我在子域上托管了单独的身份验证应用程序和多个 spa 应用程序,我想将生成的 JWT token (当用户从身份验证应用程序登录时生成)从身份验证应用程序共享到子域下托管的其他应用程序。我怎样才能
据我所知,验证 JWT 签名是一个直接的过程。但是当我使用一些在线工具为我执行此操作时,它不匹配。如何在不使用 JWT 库的情况下手动验证 JWT 签名?我需要一种快速方法(使用可用的在线工具)来演示
我的 JSON 网络 token (JWT): eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6InU0T2ZORlBId0VCb3NIanRyYXVPYlY4
我是 JWT 的新手。我对 JWT 进行了一些研究,并了解到它的框架是“header.claims.signature”。 考虑一个简单的场景,如下所示: 客户通过身份验证 客户可能具有(一个或多个)
我需要知道的最大长度 JSON Web Token (JWT) 在规范中没有相关信息。难道,长度没有限制? 最佳答案 我也一直在努力寻找这个。 我想说 - 尝试确保它低于 7kb。 虽然 JWT 在规
我看到 JWT token 由 A-Z、a-Z、0-9 和特殊字符 - 和 _ 组成。我想知道 JWT token 中允许的字符列表? 最佳答案 来自JWT introduction :“输出是三个用
我正在使用 Jhipster 创建一个应用程序。为此,我想使用 Keycloak 身份验证服务器。但是,一旦我登录,就会收到以下消息:Statut : Internal Server Error (内
我正在使用 Jhipster 创建一个应用程序。为此,我想使用 Keycloak 身份验证服务器。但是,一旦我登录,就会收到以下消息:Statut : Internal Server Error (内
我在我的网站上使用 MEAN 堆栈,用户可以在其中将带有玩家信息的事件(2-4/事件)添加到购物车。有时他们会购买多个事件。我希望此信息不会受到用户操纵(如果他们使用控制台,则在结帐前更改信息),并且
一个 JSON Web token (JWT) 被分成三个 Base-64 编码的部分,这些部分由句点 (“.”) 连接起来。前两部分对 JSON 对象进行编码,第一部分是详细说明签名和散列算法的 h
我正在使用 django rest 框架 JWT 库 http://getblimp.github.io/django-rest-framework-jwt/ JWT token 过期有两个设置 JW
我是一名优秀的程序员,十分优秀!