2008-11-29 80 views
0

好吧,我有簡單的情況:FormsAuthentication登錄後

有兩個頁面: 登錄和歡迎頁面。 即時通訊使用FormsAuthentication用我自己的表有四列:ID,用戶名,密碼,全名

當按下登錄IM設置自己的用戶名,如:歡迎頁上我不能使用上

FormsAuthentication.SetAuthCookie(userName, rememberMe ?? false); 

Page.User.Identity.Name 

提供到用戶當前登錄的用戶,但我不喜歡的用戶的用戶名在http://asp.net網站,我想用戶全名現場所有的例子

我認爲,當頁面加載它的瘋狂和不喜歡用戶會話或簡單Cookie可能會通過FormsAuth提供程序具有此自定義字段總是去db和請求全名

回答

1

我你的電話後,用戶的全名在會話cookie存儲FormsAuth

FormsAuth.SetAuthCookie(userName, rememberme); 

// get the full name (ex "John Doe") from the datbase here during login 
string fullName = "John Doe"; 

Response.Cookies["FullName"].Value = fullName; 
Response.Cookies["FullName"].expires = DateTime.Now.AddDays(30); 

,然後通過在你的視圖頁面檢索:

string fullName = HttpContext.Current.Request.Cookies["FullName"].Value 
1

表單身份驗證使用Cookie工作。你可以構建你自己的auth cookie並在其中輸入全名,但我想我會把它放到會話中。如果您使用任何類型的cookie,則每次都需要從中提取名稱。將它綁定到會話似乎更自然,並使您可以輕鬆訪問。我同意,每次回到數據庫似乎都是一種浪費,我肯定會在某處緩存該值。

構建您自己的表單身份驗證cookie的信息可以在here找到。

0

表單身份驗證沒有自定義字段。你只需要使用會話。這就是你知道的。 ;)不要忘記 - 表單身份驗證Cookie和會話是兩個獨立的事情。他們甚至每個人都有自己的超時時間。因此,除非您自己這樣做,否則當用戶註銷時會話將不會重置。

+0

是的,但它會重置,當我將重置IIS :( – Sasha 2008-11-30 07:53:35

0

有關使用配置文件來存儲什麼用戶的額外信息?

0

最簡單的選擇是使用會話。默認情況下,會話狀態存儲在內存中,並將會丟失,當ASP.NET輔助進程回收,但是你可以配置爲使用狀態服務,而不是,它保留在一個單獨的進程會話信息:

http://msdn.microsoft.com/en-us/library/ms178586.aspx

另一種選擇是使用配置文件。因爲聽起來你已經在自己的表中存儲了「配置文件」信息,所以你可能必須爲它編寫一個自定義提供程序,因此這是一個更復雜的解決方案。