flask - 如何在烧瓶中更新 JWT 身份?
问题描述
我正在尝试创建更新帐户视图,当用户单击更新时,我正在刷新令牌并获取 jwt 身份。
但是 jwt 身份没有改变,用户保持与更新前相同。数据库正在更新,但 jwt 身份没有更新。
那么如何更新身份呢?如果我只有当前的 jwt 令牌和刷新令牌。
这是我的路线
@app.route('/current-user', methods=['GET'])
@jwt_required
def get_current_user():
# Access the identity of the current user with get_jwt_identity
try:
current_user = get_jwt_identity()
if current_user:
return Response(json.dumps({"logged_in_as":current_user}), status=200, mimetype='application/json')
else:
return Response(json.dumps({"error":"Couldn't get user details"}), status=404, mimetype='application/json')
except:
return Response(json.dumps({"error":"Something went wrong"}), status=400, mimetype='application/json')
@app.route('/refresh', methods=['POST'])
@jwt_refresh_token_required
def refresh():
current_user = get_jwt_identity()
new_token = create_access_token(identity=current_user)
ret = {'access_token': new_token,"logged_in_as":current_user}
return Response(json.dumps(ret), status=200, mimetype='application/json')
解决方案
JWT 身份完全存储在令牌中,它不会从数据库中获取该信息,因此在创建新的 JWT 之前不会反映数据库中的任何更新。
看起来您正在使用flask-jwt-extended。以下是使用该扩展在每个请求中从数据库加载用户的方法:https ://flask-jwt-extended.readthedocs.io/en/stable/complex_objects_from_token/
推荐阅读
- java - 定义返回列表的 REST 端点
- powershell - Powershell New-Service 授予权限被拒绝
- xamarin - 如何从 Xamarin.ios 中的超链接 UITextView 控件中删除下划线?
- javascript - SharePoint 2013 - 使用 JavaScript 覆盖字段
- wpf - 基于 XAML 中的属性将样式应用于按钮
- mysql - 引导表不显示数据
- python - 在 NLTK 中使用 shif-reduce 解析器尽可能多地解析句子?
- php - 尝试从 json url 打印特定部分
- php - 使用 AWS 经典负载平衡的问题
- html - 我需要帮助才能在我的网站上设置电子邮件表格