region23
@region23
веб-разработчик

Как в веб-приложении под одним аккаунтом запретить одновременную работу нескольким пользователям?

Нужно сделать проверку, чтобы под одним аккаунтом в систему (веб-приложение на ASP.NET MVC) одновременно мог залогиниться только 1 пользователь.

Т.е. если под пользователем Vasya в данный момент в веб-приложении кто-то уже работает, и с другого компа пытаются под этим же аккаунтом залогиниться — не пускать.


Подскажите, как проверять? Думаю ASP.NET или PHP не важно — принципы в веб-приложениях одинаковые.
  • Вопрос задан
  • 4892 просмотра
Пригласить эксперта
Ответы на вопрос 6
taliban
@taliban
php программист
Все что писали выше банально занывается «хранение сесии в базе». Обычная сессия, пока есть активная для такого логина никого по нему не пускаете, если человек отошел от компа и хочет залогиниться с другого места, у сессии есть время «неактивности», хотя я думаю Вы понимаете как сессии работают?
Ответ написан
ngreduce
@ngreduce
Думаю лучше выкидывать старого пользователя. На нервы будет действовать сильно, и не пострадают сильно добросовестные пользователи.
Ответ написан
p4s8x
@p4s8x
Как вариант — писать постоянно что-то в cookie и при следующем переходе это проверять и писать новое значение и т.д.
Ответ написан
xaker1
@xaker1
Как вариант сохранять в базе ip+браузер и время последнего действия. Если пытаются под Vasya зайти, но ip+браузер не совпадает, а с последнего действия прошло менее 5 минут (logout по таймауту) то выдаем сообщение, что данный пользователь уже зашел.
Ответ написан
Комментировать
damirazo
@damirazo
Software developer
Выше уже описали, но я уточню как делал подобное сам. При авторизации пользователя (входе на сайт) я пишу в cookie значение специального поля в БД (пусть будет security_token). При вводе пользователем своих логина и пароля значение данного поля генерируется заново, затем обновляется в БД и записывается в cookies. На сайте, при переходе по страницам сравнивается значение данной cookie, а также cookie, отвечающей за авторизацию (которая хранит id сессии), с данными, находящимися в БД. Если значение cookie с именем security_token не совпадает со значением в БД, то значит, что кто-то вошел под тем же логином. А как поступить — зависит уже от требований.
Ответ написан
Комментировать
@Anserchik
Как вариант к предложенным проверкам ip+браузер и «выкидывании» при логине с другова компа:
при логине довабить чекбокс, если его отметить, то «выкинуть» с другова компа (или просто браузера) до окончания таймаута нельзя.

Т.е. перед авторизацией обычно есть чекбокс «запомнить», а тут могло бы быть «закрепить». Если отметил — привязал аккаунт к этому браузеру до логаута, если не отметил — можешь зайти с другова компа и тебя автоматически «выкинет» с этого. надеюсь нормально объяснил
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы