Повторная авторизация почтовой аутентификации OAuth

После того, как пользователь зашел к поставщику и получил доступ к моему веб-приложению, я получаю некоторые токены, которые я храню в Postgres под этим пользователем. Как только пользователь выходит из системы, а затем в какой-то момент хочет снова войти в систему и нажать "Войти в систему с помощью X", как мне просто войти в систему, чтобы не пересылать их снова на страницу "Авторизовать это приложение"?

Python 3.5

колба

Колба-OAuth

Колба-Войти

Дайте знать, если у вас появятся вопросы. ура

1 ответ

Найдите свой OAuth authorize_handler. Эта функция может возвращать визуализированную HTML-страницу, чтобы показать пользователю, или логическое значение, чтобы подтвердить, авторизовал ли пользователь приложение. Вы можете проверить, есть ли в вашей базе данных токен на предъявителя для данного клиента и пользователя, и просто вернуться True если он существует. Это модифицированный пример из документации Flask-OAuthlib:

@app.route('/oauth/authorize', methods=['GET', 'POST'])
@require_login
@oauth.authorize_handler
def authorize(*args, **kwargs):
    if request.method == 'GET':
        client_id = kwargs.get('client_id')
        client = Client.query.filter_by(client_id=client_id).first()
        # Getting user object
        user = current_user()
        # Getting tokens for this user and client
        tokens = BearerToken.query.filter_by(client_id=client_id, user_id=user.id)
        for token in tokens:
            # Checking if requested scopes are within given token scopes
            if set(token.scopes) >= set(kwargs['scopes']):
                return True
        kwargs['client'] = client
        return render_template('oauthorize.html', **kwargs)

    confirm = request.form.get('confirm', 'no')
    return confirm == 'yes'
Другие вопросы по тегам