2009-01-21 58 views
14

在ASP.NET(2.0)應用程序中,我使用FormsAuthentication。(HttpContext.Current.User!= null)足以假定FormsAuthentication已經驗證用戶身份

在Global.asax/Application_AuthenticateRequest方法中,我檢查HttpContext.Current.User是否爲空。

這足以知道表單身份驗證cookie是否存在,票證未過期,並且總體而言,表單身份驗證機制已完成其驗證用戶的工作?

我需要這個,因爲我在那個應用程序中有一定的頁面,有時不需要認證來訪問(根據一些條件),我把它們放在web.config中的一個單獨的「location」指令中爲了排除他們從「全部捕獲」表單身份驗證。

I.e.我正在嘗試檢查Application_AuthenticateRequest是否需要保護在此「位置」中訪問的頁面,如果是,則知道用戶是否已經過身份驗證,或者我需要重定向到登錄。

編輯:正如答案建議,最有可能我會去IsAuthenticated。爲了讓我更好地把握它,這裏有2個獎金問題:)(請編輯其他答案添加這些,謝謝):

  1. 我可以假設,如果IsAuthenticated是真的,那麼HttpContext.Current。用戶將肯定包含經過身份驗證的用戶的用戶名?

  2. 如何強制使用HttpContext.Current.User中的「匿名用戶」,如果強制執行FormsAuthentication,並且只有幾個頁面被「location」指令排除在外?

+0

當用戶的憑證是授權訪問資源的唯一決定性因素時,我更喜歡它。也許你可以將功能分成兩個不同的頁面,並允許ASP.NET來處理安全性? – Greg 2009-01-21 19:26:27

回答

28

不,User可能只是對匿名用戶的引用。檢查HttpContext.Current.Request.IsAuthenticated

+0

謝謝。我的想法是使用「標準」方式,但只是一個側面問題 - 它怎麼可能是「匿名」用戶? – 2009-01-21 18:57:57

3

我通常使用Request.IsAuthenticated。我無法告訴你,你的方法是否可行。這聽起來應該是這樣,儘管如果你支持匿名登錄可能會有副作用?

1

好問題:除了別人給出的答案之外,我建議你看看4GuysFromRolla網站上的這篇文章。

1

順便說一句,一定要檢查上下文不爲空(以便在httpmodule中工作)。

相關問題