Как получить 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,

Другие вопросы по тегам