我使用FormsAuthentication和創建用戶票連接到它的序列化數據。這幾乎是一個cookie,但在.NET環境中得到很好的支持。
既然你提到了「自己動手」的解決方案,這就是我在這些情況下使用的。
這將創建一個FormsAuthentication票:
var authTicket = new System.Web.Security.FormsAuthenticationTicket(1, System.Web.Security.FormsAuthentication.FormsCookieName, DateTime.Now, DateTime.Now + System.Web.Security.FormsAuthentication.Timeout, false, this.Serialize(someObject));
var encrypt = System.Web.Security.FormsAuthentication.Encrypt(authTicket);
var authCookie = new HttpCookie(System.Web.Security.FormsAuthentication.FormsCookieName, encrypt) { HttpOnly = true };
HttpContext.Current.Response.Cookies.Add(authCookie);
這抓起票務信息:
var result = new FormsAuthenticationTicketData((HttpContext.Current.User.Identity as System.Web.Security.FormsIdentity).Ticket.UserData);
有幾種方法,以序列化數據到餅乾,但我把它序列化到JSON敷上它在cookie中(對象必須能夠被序列化):
public string Serialize(object someObject)
{
var serializer = new JavaScriptSerializer();
var output = serializer.Serialize(someObject);
return output;
}
要使用這些數據,您所要做的就是反序列化它。記住,你真正想要傳遞的這張票是一些標識數據,可以用來從你的控制器或你的AuthorizeAttribute覆蓋中提取「私人」信息。
希望有幫助!
感謝您的所有答案。我希望我能標記多於1個的答案。 –