python – Flask JWT扩展了每个请求的令牌的有效性

python – Flask JWT扩展了每个请求的令牌的有效性,第1张

概述脚本 登录用户的令牌有效期为24小时.在此期间内,使用@jwt_required装饰器的所有请求将使当前访问令牌的到期时间再延长24小时.最长有效期为168(24 * 7)小时. 可以使用access_token和refresh_token. ret = { 'access_token': create_access_token(identity=username, fresh=T 脚本

登录用户的令牌有效期为24小时.在此期间内,使用@jwt_required装饰器的所有请求将使当前访问令牌的到期时间再延长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)    }

但这意味着来自我的applicatino的每个API调用都将是两个请求:
1.实际http请求
2.刷新身份验证令牌

@app.route('/refresh',methods=['POST'])@jwt_refresh_token_requireddef refresh():    current_user = get_jwt_IDentity()    ret = {        'access_token': create_access_token(IDentity=current_user)    }    return Jsonify(ret),200

有没有办法隐式扩展身份验证令牌?

解决方法 flask-jwt-extended的作者在这里扩展.从技术上讲,您实际上无法扩展令牌,您只能将其替换为具有新过期时间的新JWT.有几种方法可以模拟这个.

首先,不是让客户端请求新令牌,而是让服务器本身只是在每个请求上隐式发回一个新令牌.您可以将新JWT发送回标头而不是JsON有效负载,这样您就不必修改JsON数据来考虑新JWT的可能性.您的客户需要知道这一点,他们需要在每个请求上检查新的标头,并将其当前的JWT替换为新的JWT(如果存在).您可以使用烧瓶after_request方法来执行此 *** 作,因此您不必将该功能添加到所有端点.将JWT存储在cookie中时可以获得类似的效果,区别在于cookie会自动存储在您的浏览器中(因此您的客户端不必在每次请求时手动查找它们),并且增加了CSRF的复杂性如果你走这条路的保护(http://flask-jwt-extended.readthedocs.io/en/latest/tokens_in_cookies.html).

上面应该可以正常工作,但你会创建很多访问令牌,这些令牌在创建之后就会被丢弃,这可能并不理想.上述的一种变体是检查令牌是否即将到期(可能是否超过了到期的一半)并且如果是这种情况,则仅创建并返回新令牌.另一种变体是让客户端检查令牌是否即将到期(通过JavaScript),如果是,则使用刷新令牌请求新的访问令牌.要做到这一点,你需要将JWT分成点(‘.’),base64解码来自该分裂的第二组字符串(索引1),并从那里获取’exp’数据.

实现此目的的第二种方法实际上是等待令牌过期,然后使用刷新令牌生成新的访问令牌并重新生成请求(反应而非主动).这可能看起来像发出请求,检查http代码是否为401,请使用刷新令牌生成新的访问令牌,然后再次发出请求.

希望这可以帮助 :)

总结

以上是内存溢出为你收集整理的python – Flask JWT扩展了每个请求的令牌的有效性全部内容,希望文章能够帮你解决python – Flask JWT扩展了每个请求的令牌的有效性所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1195036.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存