我正在为即将到来的项目构建一个 RESTful API。这需要某种用户帐户验证。我之前使用 itsdangerous 实现了一个基于令牌的确认程序。但我想知道我是否可以通过使用 JWT-Extended 来完成同样的任务,因为它已经是我应用程序的一部分,我希望尽可能少地保持依赖项的数量。
我可以为此使用普通的 access_token 吗?
我感谢您的帮助!
编辑:
我实现了以下两种方法,它们似乎有效。我只是不确定,如果这被认为是好的做法。
@blueprint.route('/gen_confirmation_token', methods=['GET'])
@jwt_required
def gen_confirmation_token():
access_token = create_access_token(identity=get_jwt_identity(), user_claims={"confirm": True}, expires_delta=dt.timedelta(seconds=3600))
# TODO send a link to mail
return jsonify({"message": "confirmation token sent"}), 200
@blueprint.route('/confirm/<string:token>', methods=['GET'])
@jwt_required
def confirm_user(token):
user_identity = get_jwt_identity()
current_user = User.query.get(user_identity)
decoded_token = decode_token(token)
if decoded_token['identity'] == user_identity and decoded_token['user_claims'].get('confirm', False):
current_user.confirm()
return jsonify({"message": "user confirmed"}), 200
return jsonify({"message": "invalid confirmation token"}), 400