CakePHP: проверить, если пользователь уже вошел в систему - PullRequest
1 голос
/ 22 сентября 2011

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

Я использую Auth-компонент Cake для аутентификации пользователей.Сеансы обрабатываются установкой php, а php сохраняет данные сеанса в файлах.Так что я думаю, что невозможно получить доступ к данным сеанса из контроллера (разумеется, эти файлы не сохраняются в webroot).Я думал о том, чтобы проверить, вошел ли пользователь в систему, используя специальное поле базы данных, но нет никакого способа узнать, вышел ли пользователь из системы или нет, если он не использует метод выхода из системы, а просто закрывает свой браузер итак заканчивается сессия.

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

Заранее спасибо.

1 Ответ

3 голосов
/ 22 сентября 2011

I думаю CakePHP будет иметь такое поведение автоматически, если вы установите Security.level в high в вашем файле конфигурации ядра, так как он каждый раз генерирует идентификатор сессии.

Configure::write('Security.level', 'high');

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

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