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


Я создаю сайт с колбой, где пользователи имеют учетные записи и могут войти в систему. Я использую flask-principal для входа в систему и управления ролями. Есть ли способ заставить сеанс пользователя истекать, скажем, через 5 минут или 10 минут? Я не смог найти это в документации по колбе или в документации по колбе-принципалу.

Я придумал способ сделать это вручную, установить переменную на стороне сервера с тегом времени в момент входа в систему и при следующем действии пользователя принимает, сервер проверяет дельту времени на этой метке времени и удаляет сеанс.

2 62

2 ответа:

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

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 для параметра permanent_session_lifetime задано значение 31 день.

Да, мы должны ставить

session.permanent = True
app.permanent_session_lifetime = timedelta(minutes=5)

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

The permanent_session_lifetime это Основные Настройки, так что он должен быть установлен у вас настроить приложение:

 from datetime import timedelta
 app = Flask(__name__)
 app.config['SECRET_KEY'] = 'xxxxxxxxx'
 app.config['PERMANENT_SESSION_LIFETIME'] =  timedelta(minutes=5)

The сессии будет создан для каждого клиента, отдельно от других клиентов. Поэтому, я думаю, что лучшее место для установки сессии.постоянный это когда вы " войти ()":

@app.route('/login', methods=['GET', 'POST'])
def login():
    #After Verify the validity of username and password
    session.permanent = True