Автоматический выход из системы в веб-приложении Python - PullRequest
1 голос
/ 28 апреля 2010

У меня есть веб-приложение на python, в котором пользователь отправляет свой адрес электронной почты и пароль. Эти значения сравниваются со значениями, хранящимися в базе данных mysql. В случае успеха сценарий генерирует идентификатор сеанса, сохраняет его рядом с электронной почтой в базе данных и устанавливает файл cookie с идентификатором сеанса, позволяя пользователю взаимодействовать с другими частями поля зрения.

Когда пользователь нажимает кнопку «Выйти», скрипт удаляет идентификатор сеанса из базы данных и удаляет cookie. Срок действия файла cookie истекает через 5 часов. Меня беспокоит то, что если пользователь не выходит из системы и срок действия файла cookie истекает, сценарий заставит его войти в систему, но если он скопировал идентификатор сеанса ранее, он все равно может быть проверен.

Как автоматически удалить идентификатор сеанса из базы данных mysql через 5 часов?

Ответы [ 2 ]

1 голос
/ 28 апреля 2010

Вы можете закодировать время истечения как часть вашего идентификатора сеанса. Затем, когда вы проверяете идентификатор сеанса, вы также можете проверить, не истек ли он, и, если это так, вынудить пользователя снова войти в систему.

Вы также можете периодически очищать базу данных, удаляя истекшие сеансы.

0 голосов
/ 28 апреля 2010

Вы должны добавить метку времени к идентификатору сеанса в базе данных, чтобы узнать, когда он закончился.

Лучше сделайте временную метку частью самого идентификатора сеанса, например ::1003

Set-Cookie: session=1272672000-(random_number);expires=Sat, 01-May-2010 00:00:00 GMT

чтобы ваш сценарий мог видеть, просто посмотрев на номер спереди, является ли он действительным идентификатором сеанса.

Еще лучше: сделайте метку времени истечения и частью идентификатора пользователя идентификатора сеанса и сделайте бит в конце криптографическим хешем идентификатора пользователя, времени истечения и секретного ключа. Затем вы можете проверить ID и знать, к какому пользователю он принадлежит, без необходимости что-либо хранить в базе данных. ( Связанный пример PHP .)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...