Какой метод аутентификации api следует использовать для связи сервера с сервером? - PullRequest
0 голосов
/ 20 июня 2020

У меня есть веб-приложение в flask, где пользователи могут входить в систему с помощью электронной почты и пароля. Подключенный к той же базе данных, у меня есть api, где те же пользователи будут использовать его программно. Когда они делают запросы, мне нужно знать, кто их делает.

Я читал об аутентификации и авторизации, но не понимаю, какой метод лучше всего подходит для моего варианта использования. Я сосредоточился на токенах JWT, но истечение срока действия токенов заставляет меня думать, что это не лучший вариант в данном сценарии.

Как сервер должен входить в систему программно, когда срок действия токена истекает и так далее? Есть ли обычный способ сделать то, что я притворяюсь?

1 Ответ

1 голос
/ 20 июня 2020

Используйте 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

Когда токен истечет, веселье c автоматически обновит sh токен, вы можете получить новый токен в объекте request.g, а затем вернуться к пользователю.

quote

quote

...