Я создаю веб-сайт с помощью Flask, где пользователи имеют учетные записи и могут входить в систему. Я использую flask-Principal для частичного ведения журнала и управления ролями. Есть ли способ заставить сеанс пользователя истечь, скажем, через 5 или 10 минут? Мне не удалось найти это в документации по фляжке или в документации по фляжке.
Я придумал, как сделать это вручную, установив переменную на стороне сервера с меткой времени в момент входа в систему, и при следующем действии, которое выполняет пользователь, сервер проверяет временную дельту на этой метке времени и удаляет сеанс.
Ответы:
Сеансы flask истекают после закрытия браузера, если у вас нет постоянного сеанса. Вы можете попробовать следующее:
from datetime import timedelta from flask import session, app @app.before_request def make_session_permanent(): session.permanent = True app.permanent_session_lifetime = timedelta(minutes=5)
По умолчанию в Flask для параметра constant_session_lifetime установлено значение 31 день.
источник
app.secret_key
и перезапустите сервер.before_request
здесь вместоbefore_first_request
?Да, мы должны установить
session.permanent = True app.permanent_session_lifetime = timedelta(minutes=5)
Но я не думаю, что это должно быть установлено
app.before_request
, это приведет к тому, что их тоже можно будет установить.permanent_session_lifetime
Является конфигурацией основы , поэтому он должен быть установлен в настройках приложения:from datetime import timedelta app = Flask(__name__) app.config['SECRET_KEY'] = 'xxxxxxxxx' app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(minutes=5)
session
Будет создано для каждого клиента, отделено от других клиентов. Итак, я думаю, что лучшее место для установкиsession.permanent
- это когда выlogin()
:@app.route('/login', methods=['GET', 'POST']) def login(): #After Verify the validity of username and password session.permanent = True
источник