Запретить многократное соединение с одним и тем же именем пользователя - PullRequest
1 голос
/ 03 ноября 2010

Я использую предоставляемые ASP.NET SQL членства и роли поставщиков в моем приложении.

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

А как насчет пользователей за тем же маршрутизатором?Есть ли способ запретить им доступ с разных клиентских ПК?

Ответы [ 2 ]

2 голосов
/ 03 ноября 2010

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

1 голос
/ 03 ноября 2010

Возможно, вы можете сохранить все, что используете, чтобы уникально идентифицировать пользователя, например, UserId в ApplicationState и проверить, не является ли это значение нулевым. Вы добавляете их значение UserId в ApplicationState в начале SessionState, а затем в конце SessionState удаляете это значение из ApplicationState.

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

...