Flask API - проверка хеш-запроса - PullRequest
0 голосов
/ 15 мая 2018

В моем приложении apk фляги я хочу проверить хеш, отправленный клиентом.Если клиент отправляет неверный хеш, я бы хотел немедленно вернуть сообщение об ошибке.Хеш генерируется предопределенным вычислением, совместно используемым клиентом и моим приложением.

В приведенном ниже примере создан экземпляр класса Controller, возвращающий результат new_configuration.

Каков наилучший способ проверки хеша (учитывая, что у меня есть несколько таких методов) чистым, элегантным и централизованным способом без использования операторов if для каждого метода?

@app.route('/newRegistration', methods=['POST'])
def new_registration():

    controller = Controller()
    return jsonify(controller.new_configuration(request.json))

Примечание: все мои методы маршрута вызывают класс Controller.

1 Ответ

0 голосов
/ 15 мая 2018

Flask имеет before_request, after_request и другие функции, которые могут вам помочь.

Пример использования:

# routes that won't be hash validated 
PUBLIC_ROUTES = ["/favicon.ico", "/"]

@app.before_request
def validate_hash():
    # avoid validating on public routes
    for route in PUBLIC_ROUTES:
        if route == request.path:
            return

    hash = g.params.get("hash", None)

    # validate hash exists in request
    if not hash:
        raise BadRequestError("Missing hash")

    if hash != DEFAULT_HASH:
        raise UnauthorizedError("Hash is invalid")

перед каждым запросом к маршрутам фляги, которые не объявлены в PUBLIC_ROUTES, метод будет выполнен и попытается проверить параметр хеша, полученный в запросе

о вашей заметке, вы можете добавить еще один before_request, который запускает контроллер, и использовать функцию flask.g для передачи его на другие маршруты в вашем потоке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...