Сеанс проверки подлинности с помощью форм действителен после выхода - PullRequest
3 голосов
/ 02 марта 2012

Есть ли хороший способ аннулировать сеанс проверки подлинности с помощью форм с сервера?

Я понимаю, что срок действия файла cookie истек, но я хочу сделать дополнительную проверку на сервере, чтобы убедиться, что пользовательне выписан вручную.Когда пользователь выходит из системы вручную, я звоню FormsAuthentication.SignOut(), срок действия файла cookie истекает.Тем не менее, если я использую инструмент разработчика, чтобы вернуть cookie к его первоначальному значению, я все равно войду в систему.

Один из вариантов, который я могу придумать, это вставить "идентификатор входа" в UserData часть билета.Под этим я подразумеваю, что каждый логин записывается в базу данных, и с ним связан идентификатор.Когда пользователь выходит из системы вручную, я могу обновить запись базы данных, чтобы показать, что он это сделал.Это, однако, потребовало бы от меня запросов к базе данных каждый раз, когда пользователь проходил аутентификацию (не идеально).Я мог бы поддерживать кеш, но кажется, что это было бы много работы, и я надеялся, что есть более простой способ:)

Спасибо!

Ответы [ 2 ]

4 голосов
/ 02 марта 2012

MSDN документирует ограничения . Главное замечание: используйте постоянное хранилище на сервере для записи, когда пользователь выходит из веб-сайта.

2 голосов
/ 02 марта 2012

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

Вы устанавливаете его как «loggedin», когда пользователь входит в систему. Вы устанавливаете его как «loggedout» вместе с FormsAuthentication.SignOut.

Затем, где-то в начале конвейера обработки, вы извлекаете запись пользователя.(вам, вероятно, все еще понадобится это позже!) и проверьте флаг.Если флаг «отключен», значит что-то не так, и вы заканчиваете запрос 401 (или другим кодом, указывающим на проблему с аутентификацией).

Также, конечно, используйте короткое время истечения срока действия cookie вместе с скользящим истечением и SSL.Это не предотвращает захват файла cookie самим, но снижает риск его повторного использования кем-либо еще.

...