CakePHP предотвратить вход пользователя из нескольких мест одновременно - PullRequest
3 голосов
/ 12 марта 2012

У меня есть веб-сайт CakePHP 1.3.10 с системой входа в систему с использованием Auth.Как я могу предотвратить одно и то же имя пользователя / пароль для одновременного входа в систему из разных мест?Это должно работать таким образом, чтобы, когда уже зарегистрированный пользователь регистрировался из другого местоположения, первое исключалось (так что последнее может продолжать использовать мой веб-сайт).

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

Легкая часть заключается в том, чтокогда пользователь выходит из системы, я изменяю это значение на 0. Но что, если он просто закроет браузер?И что мне делать, когда пользователь входит в систему и логическое значение уже установлено на 1?Как я могу пнуть "старого" пользователя?

Любой совет будет высоко ценится ...

1 Ответ

3 голосов
/ 12 марта 2012

Для этого измените ваш config / core.php на использование сеансов, управляемых базой данных.

Configure::write('Session.save', 'database');

После этого также раскомментируйте следующую строку:

//Configure::write('Session.database', 'default');

Использование конфигурации БД по умолчанию - это то, что вам нужно в большинстве случаев.

Затем подготовьте базу данных для размещения сеансов с помощью консоли Cake:

cake schema create Sessions

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

Я сам раньше не использовал этот метод, но я полагаю, что идентификатор пользователя / имя пользователя хранится в поле data таблицы сеансов (которое, вероятно, содержит сериализованный массив или что-то подобное).

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