我在烧瓶中有一个webapp,用户可以在其中使用电子邮件和密码登录。连接到相同的数据库,我有一个api,这些相同的用户将以编程方式使用它。当他们发出请求时,我需要知道谁在发出请求。
我了解了认证和授权,但是对于用例的最佳方法感到困惑。我专注于JWT令牌,但是令牌的到期使我认为这不是这种情况下的最佳选择。
当令牌到期时,服务器应如何以编程方式登录等等?有一种通用的方式来做我假装吗?
答案 0 :(得分:1)
使用jwt验证api(我使用Flask-JWT-Extended)
示例:
def login_required(func):
@wraps(func)
def decorate(*args, **kwargs):
verify_refresh_token()
identify = get_jwt_identity()
expires_time = datetime.fromtimestamp(get_raw_jwt().get('exp'))
remaining = expires_time - datetime.now()
# auto refresh token if token expiring soon
refresh_space = current_app.config['JWT_MIN_REFRESH_SPACE']
# store the token in requests.g object
if refresh_space and remaining < refresh_space:
g.refresh_token = create_refresh_token(identity=identify)
g.id = identify
return func(*args, **kwargs)
return decorate
@login_required
def view_func():
pass
# return json
令牌到期时,函数将自动刷新令牌,您可以在request.g对象中获取新令牌,然后返回给用户。