flask

    技术2025-12-05  10

    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. 改变默认的行为

    改变回调函数 主要是令牌失效的时候的信息返回问题 # 主要是处理有效但是过期的令牌在访问一个受保护的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 动态的令牌过期时间 在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 系列

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