使用手動登錄到Web應用程序,如何將用戶ID保存在登錄cookie中?
FormsAuthentication.SetAuthCookie(_username, true);
我如何保存用戶ID(整數值)與其餅乾嗎?在認證方案中採用
使用手動登錄到Web應用程序,如何將用戶ID保存在登錄cookie中?
FormsAuthentication.SetAuthCookie(_username, true);
我如何保存用戶ID(整數值)與其餅乾嗎?在認證方案中採用
使用FormsAuthentication.GetAuthCookie
HttpCookie httpCookie = FormsAuthentication.GetAuthCookie(_username, true);
httpCookie["ID"] = userID.ToString();
用戶名並不一定意味着用戶的登錄名或真實的人的名字。它基本上意味着任何可以識別用戶的字符串 - 通常,登錄名將用於表單身份驗證(因爲登錄將是唯一的),但您可以改爲使用用戶ID(或組合登錄&用戶ID,例如「2 |千斤頂「) - 只要記住用作」用戶名「的任何值,用戶的身份(HttpContext.User.Identity.Name
)也可以使用。
FormsAuthenticationTicket有一個超載需要string userData
。除了默認的HttpContext.User.Identity
(通常是電子郵件地址,例如使用SetAuthCookie
登錄的內容)之外,您還可以在其中添加附加數據到需要保存的加密cookie中。
所以,你可以這樣做:
var user = new User { UserId = 1, Nickname = "Foo" };
var encodedTicket = FormsAuthentication.Encrypt(
new FormsAuthenticationTicket(
1,
user.Nickname,
DateTime.Now,
DateTime.UtcNow.Add(FormsAuthentication.Timeout),
true,
user.ToString()));
var httpCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encodedTicket);
httpResponseBase.Cookies.Add(httpCookie);
你可以ovveride您User
對象的ToString()
方法,保留該信息(作爲分隔字符串,例如)。
然後,當您解密cookie時,將字符串拆分並將每個請求所需的信息撤回。
謝謝。人們不經常閱讀評論。這是使他們能夠看到您的觀點並從中受益的更好方法。 – 2011-04-27 05:59:54
這是如何回答這個問題的?他問如何將它保存爲表單認證票證的一部分,而不是將其退回。 – RPM1984 2011-04-26 09:31:11
他提到「手動登錄」。我想這意味着他對自己想要的東西是有抵觸的。如果有的話,請提供其他解決方案。如果我有自己的其他解決方案,我也會提供。 – 2011-04-26 09:38:15
@ Akram-答案補充 – RPM1984 2011-04-26 23:32:04