Как получить auth_token_required в Flask_Security?
Я пытаюсь создать основанный на токене бэкэнд (API) для приложения, использующего Flask, в котором я пытаюсь использовать Flask_Security. Поскольку я использую Peewee ORM, я следовал этому руководству, чтобы создать базовую настройку, и теперь мне нужно создать представления, которые должны войти в систему пользователя, а затем представление, которое фактически предоставляет некоторые полезные данные.
Так что мой вид входа в систему, который возвращает токен, выглядит так:
@app.route('/api/login', methods=['POST'])
def api_login():
requestJson = request.get_json(force=True)
user = User.select().where(User.username == requestJson['username']).where(User.password == requestJson['password']).first()
if user:
return jsonify({'token': user.get_auth_token()})
else:
return jsonify({'error': 'LoginError'})
Это отлично работает; Я получаю токен в ответ. Теперь я хочу защитить другой вид, используя auth_token_required
и я хочу использовать токен в качестве заголовка. Поэтому я пытаюсь сделать это следующим образом:
@app.route('/api/really-important-info')
@auth_token_required('SECURITY_TOKEN_AUTHENTICATION_HEADER')
def api_important_info():
return jsonify({'info': 'really important'})
Но запуск Flask приводит к AttributeError: 'str' object has no attribute '__module__'
, Документация не очень полезна для его использования.
Кто-нибудь знает, как я могу заставить это работать? Любые советы приветствуются!
1 ответ
Ошибка в том, что декоратор не ожидает никаких аргументов (кроме функции, которую он декорирует).
@auth_token_required
def api_important_info():
pass
Значения конфигурации SECURITY_TOKEN_AUTHENTICATION_KEY
или же SECURITY_TOKEN_AUTHENTICATION_HEADER
представляет местоположение в параметрах или заголовках запроса, соответственно, входящего запроса.
Flask-Security автоматически отправляет этот токен клиенту для использования в будущем, когда JSON-запрос сделан к маршруту входа в систему.
Вы можете быть смущены множественными методами аутентификации, которые обеспечивает Flask-Security. Токены аутентификации полезны для apis, где у вас нет сеансового cookie, управляемого браузером. "Нормальная" аутентификация на основе сеанса обрабатывается с помощью login_required
,