python – Flask JWT扩展了每个请求的令牌的有效性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Flask JWT扩展了每个请求的令牌的有效性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1971字,纯文字阅读大概需要3分钟。
内容图文
![python – Flask JWT扩展了每个请求的令牌的有效性](/upload/InfoBanner/zyjiaocheng/762/1bde382e41a449cfa3b973137c186427.jpg)
脚本
登录用户的令牌有效期为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_required
def 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扩展了每个请求的令牌的有效性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。