2017-01-31 2 views
0

Рассмотрите веб-сайт, который сохраняет на диске активность своих пользователей, не требуя от них входа в систему/проверки подлинности.Признание возврата случайного пользователя через сеанс пользователя Flask

Это позволит пользователю вернуться и найти всю свою деятельность без изменений, даже если сервер был перезапущен.

Поскольку сеанс пользователя

from Flask import session 
session['foo'] = 'bar' 

обычный ДИКТ, я предполагаю, что он получает уничтожены, когда сервер остановлен и возобновлен. Поэтому он не является постоянным, если два посещения пользователя пересекают сервер повторно.

Чтобы сделать это, используя флягу, мы бы использовать базу данных сеанса

from flask.ext.sqlalchemy import SQLAlchemy 
db = SQLAlchemy() 
db.session.add(..) 
db.session.commit() 

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

Что такое уникальный идентификатор, который может быть извлечен из сеанса пользователя для сохранения в сеансе базы данных? Идея заключается в том, что когда пользователь вернется, cookie в своем браузере однозначно идентифицирует их, что, в свою очередь, будет означать, что идентификатор, который мы будем использовать из сеанса пользователя, останется неизменным.

ответ

1

Из терминологии я предполагаю, что вы используете флягу -

Итак, db.session не относится к «просмотру» сессии, с датой, связанной с одной viewer- ratehr, это относится к соединительному сессии дб, что уникален для этого цикла просмотра веб-страниц (а не для сеанса просмотра) - это разные вещи.

И как таковой код выше do сохраняет ваш объект на БД постоянным, уникальным способом. Если вы не видите их при перезапуске приложения Flask, это должно быть потому, что вы используете временную базу данных. Просто настройте свои конфигурации, чтобы использовать постоянную базу данных на диске, а не экземпляр sqlite в памяти или базу данных внутри контейнера докеров, которая создается заново каждый раз.

«Сессия», о которой вы думаете, поскольку сеанс «просмотра» не существует из коробки в Flask - вы либо рунете свой собственный, либо используете один из подключаемых модулей, таких как https://pythonhosted.org/Flask-Session/ - вот что связано с «сессией» PHP.

Смежные вопросы