Является ли (HttpContext.Current.User!= Null) достаточно, чтобы предположить, что FormsAuthentication аутентифицировала пользователя

В приложении ASP.NET(2.0) я использую FormsAuthentication.

В методе Global.asax/Application_AuthenticateRequest я проверяю, является ли HttpContext.Current.User нулевым.

Достаточно ли этого, чтобы знать, существует ли файл cookie проверки подлинности форм, срок действия билета не истек, и в целом, что механизм проверки подлинности форм выполнил свою работу для проверки пользователя?

Мне нужно это, потому что у меня есть определенные страницы в этом приложении, для которых иногда не требуется аутентификация (на основе некоторых критериев), и я помещаю их в отдельную директиву "location" в web.config для упорядочения чтобы исключить их из проверки подлинности "поймать все".

т.е. Я пытаюсь проверить Application_AuthenticateRequest, если страница, доступная в этом "местоположении", нуждается в защите или нет, и, если да, знать, был ли пользователь уже аутентифицирован, или мне нужно перенаправить на Logon.

РЕДАКТИРОВАТЬ: Как показывают ответы, скорее всего, я поеду с IsAuthenticated. Для того, чтобы я лучше понял, вот 2 бонусных вопроса:) (пожалуйста, отредактируйте другие ответы, чтобы добавить их, спасибо):

  • Можно ли предположить, что если IsAuthenticated истинно, то HttpContext.Current.User наверняка будет содержать имя пользователя для аутентифицированного пользователя?

  • Как я могу закончить с "анонимным пользователем" в HttpContext.Current.User, если принудительно применяется FormsAuthentication, и только несколько страниц исключены с директивой "location"?

Ответы

Ответ 2

Обычно я использую Request.IsAuthenticated. Я не мог сказать вам, должен ли ваш подход работать или нет. Похоже, должно быть, хотя у вас могут быть побочные эффекты, если вы поддерживаете анонимные логины?

Ответ 3

Хороший вопрос: в дополнение к ответам, которые дали другие, я бы посоветовал вам взглянуть на эту статью на 4GuysFromRolla сайт.

Ответ 4

Как и в стороне, обязательно проверьте, что контекст также не равен нулю (запустите свою работу в httpmodule).