Flask Автомат c Выйти - PullRequest
       6

Flask Автомат c Выйти

0 голосов
/ 20 января 2020

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

Что я уже получил:

@app.before_request
def before_request():
    now = datetime.datetime.now()
    try:
        last_active = session['last_active']
        delta = now - last_active
        if delta.seconds > 15:
            session['last_active'] = now
            return logout()
    except:
        pass

    try:
        conn = sqlite3.connect('ChatServer.db')
        conn.row_factory = sqlite3.Row
        wert = conn.cursor()
        wert.execute('Select Online from Accounts where Benutzername = ?', (current_user.username,))
        rv = wert.fetchall()
        if rv[0]['Online'] == 0:
            session['last_active'] = now
            return logout()
    except:
        pass

    try:
        session['last_active'] = now
    except:
        pass

Если пользователь отправляет запрос через 15 секунд c после последнего запроса или, если его флаг Online установлен в false в базе данных, он выходит из системы

def all_done():
    conn = sqlite3.connect('ChatServer.db')
    conn.row_factory = sqlite3.Row
    wert = conn.cursor()
    wert.execute('Update Accounts Set Online = 0 where ID > 0')
    conn.commit()
    conn.close()

atexit.register(all_done)

Когда сервер выключается, все пользователи выходят из системы

Моя проблема:

Когда пользователь выходит из страницы без выхода из системы или просто не делает запрос через 15 секунд, он остается в системе до тех пор, пока не откроет страницу.

Почему это проблема?

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

Надеюсь, этого достаточно, чтобы понять мою проблему

...