Выход из Flask, если срок действия сеанса истекает, если нет активности и перенаправление на страницу входа

Я очень новичок в фляге и пытаюсь обновить веб-сайт с флягой, где у пользователей есть учетные записи и они могут войти в систему. Я хочу, чтобы сеанс пользователя истек и вышел из системы, если в течение более 10 минут нет активности, и перенаправить пользователя на страницу входа.

Я хочу обновить его в @app.before_request и ниже мой код. Как мне обновить его, пожалуйста, предложите. Проверьте время входа в систему и проверьте, не было ли активности, затем выйдите из системы.

@app.before_request
def look_for_user(user=None):
        g.usr = {}
    g.api = False
    if user:
        g.usr = user
    if 'user_id' in session:
        g.usr = get_user((session['user_id'])) //from db
        if not g.usr:
            g.usr = {}
    if not g.usr:
        if request.url_rule:
            if request.url_rule.rule not in app.config['LOGIN_NOT_REQUIRED']:
                session['postlogin_landing_page'] = request.path
                if g.api:
                    return jsonify(error=True, error_message='Invalid Login/Token')
                else:
                    return redirect(app.config['LOGIN_URL'])
    elif 'login_page' in session and request.url_rule:
        if request.url_rule.rule not in app.config:
            landing_page = session.pop('login_page')
            return redirect(landing_page)

person kittu deopa    schedule 27.09.2016    source источник
comment
Не могли бы вы использовать модуль cookie? Возможно, при каждой загрузке страницы можно было бы проверять сохраненный файл cookie и, если он все еще действителен, устанавливать новый со сроком действия 10 минут. В противном случае вместо продолжения загрузки страницы произойдет выход из системы и перенаправление на страницу входа.   -  person coralvanda    schedule 27.09.2016


Ответы (2)


Вы можете использовать флаг permanent_session_lifetime и session.modified, как описано в этом вопрос.

Обратите внимание, что сеансы по умолчанию не являются постоянными, и их необходимо активировать с помощью session.permanent = True, как описано в этом ответе.

person kfb    schedule 27.09.2016
comment
я пытаюсь использовать ту же настройку app.permanent_session_lifetime = timedelta(minutes=2) , но этого не происходит. ? Не знаю, где я ошибаюсь. Нужно ли где-то устанавливать постоянное время сеанса. А затем использовать session.modified? - person kittu deopa; 27.09.2016
comment
как предлагается в этой [ссылке] (stackoverflow.com/questions/11783025/ ) Изменено и добавлено: @app.before_request def make_session_permanent(): session.permanent = True app. Permanent_session_lifetime = timedelta(minutes=5) session.modified = True После добавления я не могу войти в систему, он продолжает перенаправлять на страницу входа. - person kittu deopa; 28.09.2016

решение вашей проблемы, и для этого вам нужно импортировать библиотеку datetime.timedelta

session.permanent = True
app.permanent_session_lifetime = timedelta(seconds=3)
session.modified = True
person SR_Mehta    schedule 14.03.2018
comment
не работает для меня сэр - person Ganesan J; 08.12.2020