2013-04-09 82 views
2

我應該使用Shared還是隻使用Public函數並在需要時啓動一個類?我已經閱讀了一些文章,但仍然無法讓我的頭在這裏最好的選擇。使用共享屬性進行身份驗證驗證安全嗎?

這是我想要得到的代碼。有問題的userid是用戶登錄時設置的字符串。由於我可能需要多個頁面中的用戶標識,因此我想將其添加到類中。

Public Shared ReadOnly Property userid As String 
    Get 
     Dim ck As HttpCookie = HttpContext.Current.Request.Cookies(FormsAuthentication.FormsCookieName) 
     Dim tkt As FormsAuthenticationTicket = FormsAuthentication.Decrypt(ck.Value) 
     Return tkt.Name 
    End Get 
End Property 
+0

關鍵是調用操作的上下文。在這種情況下,該屬性從會話值中讀取,因此它可以正常工作。情況並非總是如此。看看幾年前我問過的這個問題:http://stackoverflow.com/questions/4026785/how-do-static-properties-work-in-an-asp-net-enviroment – asawyer 2013-04-09 20:19:56

回答

1

我幾乎從來不說,與認證打交道時,你應該充分利用Shared成員 - 但因爲你是使用Cookies我看不到任何理由這段代碼不會因爲是工作,更容易訪問。

1

這是非常好的和可以接受的。您可以在很多開源項目中看到在靜態方法中訪問HttpContext.Current

供參考:HttpContext.Current必須在當前調用線程上,所以一定要檢查HttpContext.Current是否爲空。