asp.net Как истечь сеанс из другого сеанса - PullRequest
0 голосов
/ 04 августа 2011

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

Ответы [ 4 ]

2 голосов
/ 04 августа 2011

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

Вы должны реализовать свой собственный метод

посмотрите ниже:

http://geekswithblogs.net/Frez/articles/preventing-a-user-from-having-multiple-concurrent-sessions.aspx

0 голосов
/ 08 июля 2013

Пожалуйста, обратитесь к:

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

Вам придется реализовать собственное решение, как сказал @Massimiliano выше.

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

Конечно, он может не соответствовать 100% того, что вам нужно, поэтому не стесняйтесь изменять его под свои нужды.

0 голосов
/ 04 августа 2011

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

Я бы предложил всегда сохранять «последний использованный идентификатор сеанса» вместе свременная метка с каждым запросом, который делает пользователь.

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

0 голосов
/ 04 августа 2011

если вы храните последний использованный IP-адрес в базе данных, все сеансы могут проверить при загрузке следующей страницы или вызовах любого обработчика, если их запрос приходит с того же IP-адреса или нет, и если нет, вы можете позвонить Session.Abandon();

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