2015-06-13 72 views
2

HttpContext有一個用戶屬性,它處理IPrincipal類型。 從MS的文檔,我知道屬性可能被HTTP模塊,例如WindowsAuthenticationModuleFormsAuthenticationModule 但是,例如可以設置,這是WindowsAuthenticationModule代碼:最初設置HttpContext.User屬性在哪裏?

WindowsPrincipal user = context.User as WindowsPrincipal; 
     if (user != null) {/* code... */} 

有趣的是如果條件爲false(用戶爲空或用戶具有其他類型,而不是WindowsPrincipal),則返回控制(用於IIS的插入模式管道),返回控制爲WindowsAuthenticationModule。 我有以下問題:

  1. IIS驗證客戶端後(匿名或身份驗證的用戶,因爲它被配置),它會通過一個安全令牌ASP.NET。我們的應用程序在任何情況下都會將此令牌包裝在WindowsIdentityWindowsPrincipal對象中。它發生在認證模塊開始實施之前。 這是真的嗎?

  2. 如果1爲真,那麼HttpContext.User屬性最初設置在哪裏?

  3. 如果1爲真,那麼當HttpContext.User爲空時?我想這是我是否配置Web.config文件可能是:

    <認證模式= 「無」/>

我說得對不對?

回答

0

在大多數情況下,HttpContext.User是在用戶通過身份驗證(而不是匿名)時設置的。我知道在FormsAuthentication中這發生在FormsAuthentication.SetAuthCookie上,當客戶端註銷並且cookie被清除時,HttpContext.User被設置爲空。