Эксклюзивный вход в ASP.NET FormsAuthentication

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

Моему клиенту не нравится, что несколько человек вошли в систему с одними и теми же учетными данными. Они хотели бы, чтобы вход в систему аннулировал всех клиентов, вошедших в систему в данный момент.

В FormsAuthentication нет метода, чтобы сообщить серверу «аннулировать любой другой файл cookie под этим именем». KB900111 предполагает, что сервер не поддерживает список действительных файлов cookie. Так что мой подход звучит не очень хорошо.

Какая альтернатива? Пора отказаться от форм auth?


person TesterTurnedDeveloper    schedule 28.01.2010    source источник
comment
Возможные дубликаты: stackoverflow.com/questions/2025908/ stackoverflow.com/questions/303420/ http://stackoverflow.com/questions/937048/asp-net-members-prevent-people-logging-in-as-the-same-user-on-different-mac Проблема в том, что для этого сложно найти хорошие условия поиска.   -  person Greg    schedule 29.01.2010
comment
Вы правы - я не придумал правильные поисковые запросы, чтобы найти обманщиков. Мой вопрос немного отличается, так как я хочу исключить любые «другие» логины.   -  person TesterTurnedDeveloper    schedule 29.01.2010


Ответы (1)


Не обязательно. Forms auth по-прежнему предоставляет немало встроенных функций, которые могут вам понадобиться. Возможно, вы можете сгенерировать и выдать Guid при первом входе каждого пользователя в систему и сохранить его на стороне сервера и в cookie (желательно защитный билет). Каждый раз, когда делается запрос, вы проверяете, использует ли пользователь не только правильные учетные данные, но также тот же компьютер и браузер (на основе файла cookie, который вы отправили пользователю при входе в систему). Вы, конечно, должны убедиться, что ваш Guid истекает в какой-то момент, а также убедитесь, что вы очистили его, когда пользователь выйдет из системы.

person Brandon Montgomery    schedule 28.01.2010
comment
Я следую руководству по серверу / биту cookie. Где мне провести тест на той же машине и в браузере? - person TesterTurnedDeveloper; 28.01.2010
comment
Вы можете сделать это в файле Global.asax.vb / .cs в одном из событий ... Я бы, вероятно, попробовал событие AuthenticateRequest. Таким образом, каждый запрос будет проверяться, и проверку можно будет контролировать в одном месте. - person Brandon Montgomery; 02.02.2010