2016-07-30 3 views
2

Я только что сказал, используя Flask, и пытался реализовать небольшую функцию в моем проекте. Цель состоит в том, чтобы установить cookie только в том случае, если запрос исходит от аутентифицированного пользователя.Middleware in flask

Я нашел два способа сделать это.

Первый метод

@app.before_request 
def before_request(): 
    # set cookie if user is logged in 

Второй метод, с помощью реализации что-то вроде этого adding-a-simple-middleware-to-your-flask-application

Может кто-нибудь объяснить мне, каковы основные различия между этими двумя методами, и когда и где, которые следует использовать метод ,

Кроме того, я использую «флажок-логин» для отслеживания зарегистрированного пользователя. Если я использую первый способ, я могу легко проверить, если кто-то регистрируется в импортируя CURRENT_USER

from flask.ext.login import current_user 

но если я пытаюсь сделать то же самое при использовании второго метода, то current_user не всегда «None», как контекст приложения неверен.

Итак, я хотел знать, решил ли я продолжить вторую реализацию, как проверить, вошел ли пользователь в систему или нет.

ответ

1

Я никогда не использовал второй метод, о котором вы упоминали. Я уверен, что это можно сделать с этим, но это очень редко. Я бы предложил использовать более общие функции колбы. Для сторонников вашего кода :) Итак, первый метод, о котором вы упоминали, в порядке.

Или вы можете использовать decorators для более подробных ограничений доступа. Имейте в виду, что setting cookies in flask может быть сделано при создании реального объекта ответа. Это означает, что вы должны использовать Deferred Request Callbacks для настройки файлов cookie в декорированной функции.

+0

благодарит за ответ. Я применил требуемые функции, используя обратные вызовы с отложенным запросом, которые вы упомянули – amarok