2016-07-11 11 views
0

Я пытаюсь использовать cookie для запоминания, если посетитель уже видел определенную страницу учебника на моем сайте. Сайт построен с использованием Flask.set persistent cookie with python flask

Эта страница учебника загружается из флеш-маршрутизации, поэтому я решил попробовать и изменить файл cookie в определении маршрутизации колбы, используя функцию make_response и response.set_cookie из флеш-рамки.

Однако этот (сеансный) файл cookie работает только на время сеанса. Я не могу найти информацию о настройке постоянных/постоянных файлов cookie с флягой. Как я могу сделать это с флягой?

Спасибо!

+0

Посмотрите на 'колба-login'. Он предоставляет функции [запомнить быть] (https://flask-login.readthedocs.io/en/latest/#remember-me). Вы также можете найти пример использования его в учебнике по [фляге] Мигеля Гринджера (http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-v-user-logins) – vrs

+0

спасибо, что указали мне в правильном направлении. Flask-login, однако, немного похож на overkill, чтобы добавить свойство в cookie. Нет других способов изменить постоянный файл cookie? – joost2076

+0

может [эта тема] (https://stackoverflow.com/questions/11783025/is-there-an-easy-way-to-make-sessions-timeout-in-flask) быть полезной? Кроме того, убедитесь, что вы правильно используете 'session.permanent' (см. [Этот поток] (https://stackoverflow.com/questions/18662558/flask-login-session-times-out-too-soon)) – vrs

ответ

1

Чтобы установить постоянные куки, вы должны добавить «истекает» поле в HTTP заголовке:

Set-Cookie: <cookie-name>=<cookie-value>; Expires=<date> 

Если вы не обеспечивают Expires=, то браузер рассматривает печенье в качестве «сеанса» куки и удаляет файл cookie, когда браузер закрыт.

Для Колба, вы можете использовать параметр expires= функции response.set_cookie(), как это в течение 30-ти дней печенья:

import datetime 
response.set_cookie(name, value, 
        expires=datetime.datetime.now() + datetime.timedelta(days=30))