2010-09-29 71 views
3

當用戶登錄到我的asp.net網站我使用下面的代碼:Asp.net,在哪裏存儲登錄用戶的用戶名?

FormsAuthentication.RedirectFromLoginPage(userid, false); 

正如我經常需要使用的用戶ID,我可以再後來獲得通過的用戶ID:

string userid = System.Web.HttpContext.Current.User.Identity.Name; 

現在我也想在每個頁面上顯示登錄的用戶名,因此我的問題是如果我需要在每個頁面上使用它,我最好將用戶名放在哪裏。 User.Identity.Name已經被用戶使用,所以我不能使用它。另一種解決方案是從每個頁面上的數據庫獲取用戶名,但這似乎是一個不好的解決方案。

所以:使用會話存儲用戶名的最好方法是什麼?

+0

我相信價值被緩存。所以你在第一次請求之後並沒有實際觸及數據庫。 – 2010-09-29 14:24:03

+0

對不起,我有點不清楚。編輯了這個問題。 – Martin 2010-09-29 14:28:37

回答

1

你可以在asp.net中存儲幾乎任何東西在SessionState。只是要小心,並且正確的事情存儲在正確的地方(你也可以使用ViewState存儲變量。

檢查this out如何使用SessionState的跨回傳存儲和檢索變量。

0

使用會話不一個壞主意,但要確保檢索值時,檢查爲NULL時,會話超時。

或者你也可以通過在URL如

/Set 
Response.Redirect("Webform2.aspx?Username=" + this.txtUsername.Text); 

/Read 
this.txtBox1.Text = Request.QueryString["Username"]; 
1
傳遞變量1475
4

存儲信息基本上有6種不同的方式,每種方式都有自己的優點和缺點。

  1. 類成員變量。這些只對一個頁面刷新的生命有好處。
  2. HttpContext變量。像類成員變量一樣,僅適用於一個頁面刷新。
  3. ViewState,這些都是從頁面到頁面傳遞以保持狀態,但增加了下載數據的大小。另外,對於敏感信息不好,因爲它可以被解碼。
  4. 餅乾。發送每個頁面請求。對於敏感信息也不好,即使加密。
  5. 會議。沒有傳遞給最終用戶,非常適合敏感信息,但會增加頁面的資源使用率,因此儘量減少繁忙網站的使用量非常重要。
  6. 身份驗證Cookie用戶數據 - 這就像cookies,但可以使用身份驗證數據進行解碼,並用於創建自定義IIdentity提供程序,以實現您所需的身份信息,例如姓名或其他個人資料信息。然而,尺寸是有限的。
相關問題