2016-03-17 6 views
0

В приложении asp.net с использованием проверки подлинности форм я пытаюсь найти, какое событие будет вызываться при возникновении таймаута.какое событие вызывается при возникновении тайм-аута проверки подлинности

Я знаю, что я могу захватить событие тайм-аута с помощью Session_End в global.asax, но есть ли он для части проверки подлинности форм?

ответ

0

Как вы можете видеть здесь: Forms Authentication Timeout Logging, вы не можете обнаружить его в точное время, когда оно истекает.

Что вы можете сделать, это проверить билет проверки подлинности форм в Application_PreRequestHandlerExecute. Это означает, что вы можете проверить это только в тот момент, когда пользователь делает запросы на сервер, поэтому, если пользователь закрывает браузер, вы не можете обнаружить это событие до следующего раза, когда пользователь снова запустится на ваш сервер.

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

+0

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

+0

Можете ли вы проверить (возможно, с помощью Fiddler), что Cookie-сообщение об аутентификации форм отправлено в запросе вообще? –

+0

Я не могу легко опубликовать код на скрипаче, но проверил еще несколько тестов, подтверждающих, что Auth Cookie создается после входа в систему и отправляется обратно с каждым запросом, но как только Auth Cookie истекло (установите тайм-аут на 2 минуты, оставил приложение в покое в течение 3 минут), любой сделанный запрос не содержит Auth Cookie. – sbarnby71