Есть ли простой способ сделать тайм-аут сеанса в колбе?
Я создаю веб-сайт с флягой, в которой пользователи имеют учетные записи и могут войти в систему.
Я использую flask-principal для входа в систему и управления ролью.
Есть ли способ сократить срок действия сеанса пользователя после 5 минут или 10 минут?
Я не смог найти это в документации на фляге или в документации по фляжке.
Я подумал о том, как это сделать вручную, установить переменную на стороне сервера с тегом времени в момент входа в систему и при следующем действии, которое выполняет пользователь, сервер проверяет время-дельта на эту метку времени и удаляет сессия.
Ответы
Ответ 1
сеансы колб заканчиваются после закрытия браузера, если у вас нет постоянного сеанса. Вы можете попробовать следующее:
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 день.
Ответ 2
Да, мы должны установить
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