как насчет того, чтобы позволить пользователю войти в систему одновременно? - PullRequest
0 голосов
/ 04 июля 2011

В моем приложении все страницы защищены, поэтому они должны войти в систему, чтобы посетить страницы.

И администратор системы может добавлять пользователей.

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

То есть, если в систему вошел пользователь с именем «Джон», поэтому другие люди не могут войти с «Джоном» снова, если он знаетпароль.

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

Интересно, нужно ли это?

Поскольку я обнаружил, что многие веб-сайты в настоящее время не ограничивают это, например, вы можете использовать одну и ту же учетную запись.войдите в свой gmail / stackoverflow / yahoo и т. д. одновременно на разных компьютерах.

Итак, кто-нибудь может дать мне предложение?


Обновление:

Теперь мы используем аутентификацию формы asp.net (пока мы не используем членство).И в таблице t_user в базе данных у нас есть столбец с именами «isOnline» и «last_login_time».

Когда пользователь входит в систему, мы устанавливаем «isOnline» в 1 и сохраняем время входа в систему.

Когда другой пользователь пытается войти снова, мы проверяем «isOnline» и время:

if("isOnline"==1 && DateTime.now-LastLogiTIme <40min) // where the 40 min is the form authenaication timeout.
  thisAccountHasLogined=true;

Но предположим, что пользователь уже вошел в систему, тогда он очистит куки браузера, затем, если он обновит страницуОн будет перенаправлен на страницу входа в систему, но не сможет снова войти в систему до истечения времени проверки подлинности формы, поскольку «isOnline» в БД равно 1, а промежуток времени от его входа в систему до настоящего времени не превышает время ожидания формы.

Я в замешательстве.

Ответы [ 2 ]

1 голос
/ 04 июля 2011

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

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

Обновление

Я сам заинтересовался этим и нашел это;

http://msdn.microsoft.com/en-us/library/system.web.security.membershipusercollection.aspx

и это

http://msdn.microsoft.com/en-us/library/system.web.security.membershipuser.aspx

Используя их, можно получить эту информацию с помощью .IsOnline() Однако, это предполагает, что вы используете стандартное членство asp.net

0 голосов
/ 04 июля 2011

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

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