登录用户的令牌有效期为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扩展了每个请求的令牌的有效性所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)