HttpContext.Current.User является нулевым в Windows аутентификации (интегрированный конвейер) - PullRequest
2 голосов
/ 23 декабря 2011

В web.config:

<configuration>
    <authentication mode="Windows">
    </authentication>
    <authorization>
      <deny users="?" />
    </authorization>
</configuration>

в global.asax

protected void Application_AuthenticateRequest(object sender, EventArgs args)
{
    tracker.LogRequest(HttpContext.Current.User, DateTime.Now)
    ///THIS IS ALWAYS NULL!!!
}

Меня это просто смущает, есть идеи?

1 Ответ

3 голосов
/ 23 декабря 2011

Я думаю, что это признак того, что вы слушаете не то событие.Вероятно, вам следует прослушать Application.PostAuthenticateRequest .

Запуск образца кода с использованием имеющегося у меня проекта, который аутентифицируется в Active Directory моего локального домена и спрашивает, является ли объект User ничем:

Код

Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
    Debug.WriteLine("Authenticate Request: " & (HttpContext.Current.User Is Nothing))
End Sub

Sub Application_PostAuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
    Debug.WriteLine("Post-authenticate Request: " & (HttpContext.Current.User Is Nothing))
End Sub

Вывод

Запрос на аутентификацию: True

Пост-аутентификацияЗапрос: False

После события PostAuthenticateRequest свойство HttpContext.Current.User.Identity является экземпляром System.Security.Principal.GenericIdentity для неаутентифицированных запросов.

...