У меня есть приложение 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 секунд, он остается в системе до тех пор, пока не откроет страницу.
Почему это проблема?
Я хочу, чтобы пользователь мог войти в систему только в одном экземпляре. Если пользователь остается в системе, он блокируется.
Надеюсь, этого достаточно, чтобы понять мою проблему