Структура базы данных пользователей, которая позволяет несколько одновременных входов в одну учетную запись - PullRequest
1 голос
/ 22 сентября 2010

Функция, которая в настоящее время отсутствует в одном из моих веб-приложений, заключается в том, что один пользователь может одновременно войти в систему только на одном компьютере.То есть, если пользователи входят в систему в другом месте, его предыдущий сеанс будет отключен.

Это связано с тем, что в моей таблице текущих пользователей есть столбцы:

user: id, username, hash, salt... cursession

Когда каждый пользователь входит в системуидентификатор сеанса помещается в поле «cursession» и при каждой загрузке страницы сверяется с базой данных.В результате одновременно может быть активен только один «сеанс».

  1. Является ли текущая структура и метод таблицы безопасными и стандартными?Эта система была в значительной степени импровизирована, и у меня нет профессионального опыта.
  2. Как можно было бы разрешить несколько одновременных входов?Я просто думаю о добавлении таблицы "сессий" с большим количеством отношений между ID пользователя и курсом, но каков стандартный метод для этого?

1 Ответ

1 голос
/ 22 сентября 2010

Я предлагаю, чтобы вы поместили текущий зарегистрированный идентификатор пользователя в сеанс пользователя (в качестве переменной сеанса) и полностью удалили поле cursession из таблицы. Вам не нужно заново изобретать обработку сеанса, поскольку в PHP она уже встроена.

Таким образом, пользователь может войти на несколько компьютеров одновременно. Переменные сессии также безопасны, так как они не обрабатываются браузером. В браузере хранится только идентификатор сеанса, который идентифицирует текущий сеанс, все остальные данные хранятся на стороне сервера. Единственное, что произойдет, если пользователь изменит куки-файлы своего браузера, это то, что он выйдет из системы (запустит пустую сессию), поэтому он не сможет заставить себя войти в систему под именем другого пользователя.

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