【问题标题】:How to use jwt refresh tokens如何使用 jwt 刷新令牌
【发布时间】:2020-05-10 09:10:07
【问题描述】:

我正在使用 python flask_jwt_extended 来处理 jwt。我有一个刷新端点(来自文档),如下所示:

# The jwt_refresh_token_required decorator insures a valid refresh
# token is present in the request before calling this endpoint. We
# can use the get_jwt_identity() function to get the identity of
# the refresh token, and use the create_access_token() function again
# to make a new access token for this identity.
@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

我不确定何时应该在前端调用此端点。当我尝试使用受保护的端点时,我得到以下信息(这是预期的):

{
  "msg": "Token has expired"
}

我应该如何知道在前端到期之前刷新令牌以及它会如何做到这一点?

【问题讨论】:

    标签: flask jwt refresh-token flask-jwt-extended


    【解决方案1】:

    所以你通常做的是有 2 个端点,其中一个会发出令牌

    还有一个发出刷新令牌的刷新

    因此,在您第一次调用 JS 代码时,您将获得令牌。令牌通常包括日期时间或到期时间(例如以秒为单位)

    然后在你的 JS 中,你会检查你的令牌还剩多少时间,如果时间不多,你应该调用你的 refrehtoken 路由来获取一个新的令牌

    【讨论】:

    • 别再解释了,对于每个 HTML 页面,我可以有一个 js 文件来处理刷新令牌。不是所有令牌信息都存储在 HTTPOnly cookie 中吗?如果是,我将如何访问它?
    • 不,你通常在 JS 中有一个通用的令牌服务,它会被破坏并存储在本地存储中,并负责为每个请求创建 Berarer 令牌头
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 2022-01-19
    • 2016-03-05
    • 2016-06-25
    • 2022-12-23
    • 2019-03-08
    相关资源
    最近更新 更多