Повторная авторизация почтовой аутентификации 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'