服务器与服务器之间的通信应使用哪种api身份验证方法?

时间:2020-06-19 22:33:26

标签: api authentication flask authorization flask-restful

我在烧瓶中有一个webapp,用户可以在其中使用电子邮件和密码登录。连接到相同的数据库,我有一个api,这些相同的用户将以编程方式使用它。当他们发出请求时,我需要知道谁在发出请求。

我了解了认证和授权,但是对于用例的最佳方法感到困惑。我专注于JWT令牌,但是令牌的到期使我认为这不是这种情况下的最佳选择。

当令牌到期时,服务器应如何以编程方式登录等等?有一种通用的方式来做我假装吗?

1 个答案:

答案 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对象中获取新令牌,然后返回给用户。

quote

quote