Есть ли простой способ сделать тайм-аут сеанса в колбе?

Я создаю веб-сайт с флягой, в которой пользователи имеют учетные записи и могут войти в систему. Я использую 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