flask_jwt_extened官方文档学习(2)

flask_jwt_extended:官方文档

7. 刷新令牌(一种令牌 refresh tokens)

可以用来在旧的令牌过期的时候创新新的访问令牌的一种令牌(不能访问jwt_required()节点,而access token不能访问 jwt_refresh_token_required()装饰的节点)。可以设置access_token的过期时间利用refresh_token生成新的access_token。
这里 refresh token的放置位置还是默认在请求头部,文档后面的配置字段可以更改这个设置

在这里插入图片描述

8. 令牌刷新性(对访问令牌增加的属性freshness)

主要是在access_token的基础上增加了fresh为True,对应的可以访问fresh_jwt_requires()装饰的endpoint, 和refresh token结合使用可以提高站点的安全性。

9. 改变默认的行为

  1. 改变回调函数
    • 主要是令牌失效的时候的信息返回问题
# 主要是处理有效但是过期的令牌在访问一个受保护的endpoint之前
# 执行
@jwt.expired_token_loader
def my_expired_token_callback(expired_token):
    token_type = expired_token['type']
    return jsonify({
    
    
        'status': 401,
        'sub_status': 42,
        'msg': 'The {} token has expired'.format(token_type)
    }), 401		
  1. 动态的令牌过期时间
  • 在create_refresh_token()和create_access_token()中指定expires_delta参数来设置两种令牌的过期时间。
  • 短期的access_token可以用来提供web应用的访问功能,而长期的refresh token更多的会用来给编程人员提供API。

10. 配置选项

主要是用来给flask app指定相关的参数的,具体的可以查看文档页面,重点是黑名单的设置
Configuration Options: link

11. 黑名单和令牌撤销(内存数据库的使用)

可以支持开箱即用的令牌撤销操作,主要是通过token_in_blacklist_loader()装饰器来写功能,可以和数据库或者是redis结合使用,两者官方文档都有参考。

此外,该装饰器会在每次访问endpoint的时候都会调用,如果都检测的话可能会导致负载大的问题。文档推荐的是access token用expired time来失效,而refresh token用黑名单来撤销。

12. JWT放置的位置

JWT in 系列

  1. in cookies: 可以减少XSS攻击啥的(不懂。。。)
  2. in queryString:把token放到get请求的参数中去,文档本身不推荐这么搞,可能你的token就被记录了
  3. in json body:把jwt存放在data body中,但是这样会导致get请求没有数据体而无法访问受保护的endpoint。

猜你喜欢

转载自blog.csdn.net/qq_42573343/article/details/107128934
今日推荐