Как выйти из предыдущей сессии пользователя, если он снова входит в тот же или другой браузер - PullRequest
1 голос
/ 13 сентября 2009

У меня есть запрос, я хочу, чтобы, если пользователь уже вошел на веб-страницу, и снова он повторно регистрируется с того же или другого компьютера, его предыдущий сеанс должен быть прерван, и он автоматически выходит на главную страницу. Я использую jquery на стороне клиента и сервлеты на бэкэнде. Я использую Tomcat 6 в качестве веб-сервера и JDK1.6 компилятор. Я просто хочу, как Yahoo, если пользователь входит в систему с некоторой машины, и в следующий раз, когда он снова входит в систему с какой-либо другой или той же машины, он автоматически выходит из предыдущей сессии и перенаправляется на главную страницу. Пожалуйста, расскажите, как я могу это реализовать.

Ответы [ 3 ]

4 голосов
/ 13 сентября 2009

Вот мой действительно надуманный метод обнаружения различных машинных логинов

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

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

  3. Если это совпадает, все хорошо.

  4. Если это не совпадает, это не с той же машины; потому что, если пользователь войдет в другое место, будет создан новый хеш-ключ, который заменит его в базе данных.

4a. Скажите пользователю на исходном компьютере, что «Вы вошли в другое место» и удалите все сеансы там (то есть выйдите из него). Но это только на следующей странице обновления - этого можно избежать, если вы используете AJAX

Что касается того же входа в систему - если пользователь пытается войти на сайт, когда он уже вошел в систему, просто отобразить сообщение, что он уже вошел в систему? Каково намерение сбрасывать данные сеанса, если он снова входит в систему (мы говорим о том, что один и тот же пользователь входит на тот же сайт на том же компьютере?)

0 голосов
/ 13 сентября 2009

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

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

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

0 голосов
/ 13 сентября 2009

Когда пользователь снова входит в систему, просто сгенерируйте новый идентификатор сессии, и предыдущий станет недействительным.

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