在我的項目中,需要使用自定義對象來代替FormAuthenticationTicket。我們創建了一個具有與FormAuthenticationTicket相同屬性的自定義對象。現在我們使用我們自己的加密方法來加密這個自定義對象。我們已經成功創建了FormAuthentication cookie。但是當我們檢查context.User.Identity.IsAuthenticated屬性時,它始終是false。這是代碼。我們可以用表單驗證模塊中的自定義對象替換表單驗證票嗎?
CookieData cookieData = new CookieData();
cookieData.ExpirationDate = DateTime.Now.AddMinutes(CookieConstants.DefaultFormsAuthTicketTimeout);
cookieData.LoginToken = LoginToken;
cookieData.Impersonate = (IsImpersonate ? true : false);
cookieData.IsPersistent = IsPersistent;
cookieData.UserData = "<<UserRelated Information>>";
JavaScriptSerializer js = new JavaScriptSerializer();
string strCookieData = js.Serialize(cookieData);
string encryptedTicket = AESEncryption.Encrpyt(strCookieData);
HttpCookie httpCookie = null;
httpCookie = new HttpCookie(cebCookie.Name, encryptedTicket);
if (cebCookie.IsPersistent)
{
httpCookie.Expires = cebCookie.Expires;
}
if (!string.IsNullOrEmpty(cebCookie.Url))
{
httpCookie.Secure = cebCookie.RequireSSL;
httpCookie.Domain = cebCookie.Domain;
}
httpCookie.Path = FormsAuthentication.FormsCookiePath;
HttpContext.Current.Response.Cookies.Set(httpCookie);
我知道這是一個有線需求。 請幫忙。
爲什麼你會期望asp.net能夠理解你的定製票與它自己的加密方案?你故意讓一些不相容的東西,現在你感到驚訝,它不兼容? – 2013-05-08 04:49:14