flask - 如何使用 jwt 刷新令牌
问题描述
我正在使用 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"
}
我应该怎么知道在前端到期之前刷新令牌,它会怎么做?
解决方案
因此,您通常做的是有 2 个端点,其中一个会发出令牌
还有一个发出刷新令牌的刷新
因此,在您第一次调用 JS 代码时,您将获得令牌。令牌通常包括 DateTime 或到期时间(例如以秒为单位)
然后在您的 JS 中,您将检查您的令牌还剩多少时间,如果时间不多,您应该调用您的 refrehtoken 路由以获取新令牌
推荐阅读
- c++ - 如何修复调试|x86:/app/.cxx/Debug/4h5h96q2/x86/CMakeFiles/CMakeTmp/CMakeLists.txt 中的 CMake 警告:
- haproxy - 咨询通过 HAproxy 将 http 重定向到 https
- visual-studio-code - 如何在 VIM 上突出显示多个单词并全部修改?就像 CTRL+D 在 VS-Code 上所做的那样?
- android-studio - 我的 Android 工作室停止工作并显示此错误
- ethereum - 收据和确认回调之间的区别
- c# - 正则表达式迁移到 SQL Server
- image - 为什么 Golang `png.Encode` 方法会使颜色数据出错?
- flutter - 参数类型“Null”不能分配给参数类型“String”。颤振问题
- mysql - 为每一行设置表名
- android - 如何在sqlite android中进行更改