我正在使用flask-restful开发一个API。我要确保当用户登录时,除非他首先被注销,否则他不能再次登录。我正在使用flask-jwt-extended,我想知道是否有一种方法可以在尝试登录之前检查用户已经登录的位置。
发布于 2020-01-10 00:21:57
您可以尝试使用jwt_optional装饰器,但如果令牌过期或无效,则会出现错误:
@app.route('/hello')
@jwt_optional
def hello():
user = get_gwt_identity()或者只检查token是否有效并返回user。如果令牌无效,用户将为none:
from flask_jwt_extended import get_jwt_identity, verify_jwt_in_request_optional
def get_identity_if_logedin():
try:
verify_jwt_in_request_optional()
return get_jwt_identity()
except Exception:
pass
@app.route('/hello')
def hello():
user = get_identity_if_logedin()
# check if user is loged in
if user:
# user var here has jwt_identity发布于 2018-04-09 01:56:45
一种选择可能是在您的基本路由上使用jwt_optional装饰器,如果用户未登录,则返回登录页面的重定向:http://flask-jwt-extended.readthedocs.io/en/latest/optional_endpoints.html
如果后端只是一个API,一个更好的选择可能是在你的前端(在本地存储或任何你保存它的地方)查找访问令牌,并放入是否应该显示登录页面的逻辑。
发布于 2019-11-13 23:19:16
在受保护的端点中,这将返回正在访问此端点的JWT的标识。如果不存在JWT,则返回None。
from flask_jwt_extended import jwt_required, jwt_optional, get_jwt_identity
if get_jwt_identity():
passhttps://stackoverflow.com/questions/49717463
复制相似问题