Flask JWT:get_jwt_identity() 没有@jwt_required 总是return 非
Flask JWT : get_jwt_identity() without @jwt_required always return Non
我正在构建一个 Flask JWT 扩展应用程序,这是我想要做的:
我已经向所有人开放端点(即没有装饰器@jwt_required,每个人都可以访问 link)
但如果有人通过身份验证访问此 link,我希望能够取回他的身份,类似这样的事情:
@bp.route('/test', methods=('GET', 'POST'))
def test() -> str:
identity = get_jwt_identity()
print(a)
if identity is not None:
# do something
else:
# do other stuff
问题是没有装饰器,get_jwt_identity总是returnNone
有办法做到吗?
谢谢
如果您使用的是 4.x.x 版本,请使用 @jwt_required(optional=True)
。如果您仍在使用 3.x.x 版本,请使用 @jwt_optional
如果您想在未受保护的端点上解码自定义访问令牌。您需要使用 flask-jwt-extended
中的 decode_token
from flask_jwt_extended import decode_token
def post(self):
data = ResetPassword.parser.parse_args()
reset_token = data['reset_token']
decoded_token = decode_token(reset_token)['sub']
当您从
创建令牌时,sub
指的是“身份”
access_token = create_access_token(identity=user.get_id())
我正在构建一个 Flask JWT 扩展应用程序,这是我想要做的:
我已经向所有人开放端点(即没有装饰器@jwt_required,每个人都可以访问 link)
但如果有人通过身份验证访问此 link,我希望能够取回他的身份,类似这样的事情:
@bp.route('/test', methods=('GET', 'POST'))
def test() -> str:
identity = get_jwt_identity()
print(a)
if identity is not None:
# do something
else:
# do other stuff
问题是没有装饰器,get_jwt_identity总是returnNone
有办法做到吗?
谢谢
如果您使用的是 4.x.x 版本,请使用 @jwt_required(optional=True)
。如果您仍在使用 3.x.x 版本,请使用 @jwt_optional
如果您想在未受保护的端点上解码自定义访问令牌。您需要使用 flask-jwt-extended
decode_token
from flask_jwt_extended import decode_token
def post(self):
data = ResetPassword.parser.parse_args()
reset_token = data['reset_token']
decoded_token = decode_token(reset_token)['sub']
当您从
创建令牌时,sub
指的是“身份”
access_token = create_access_token(identity=user.get_id())