好吧,我已經分配了在登錄頁面上使用的身份驗證。我一直在研究這一段時間,並決定清理它。我遇到的問題是其中沒有拋出異常,沒有產生錯誤,並且一切都看起來不錯的問題之一,但是當你嘗試使用某個函數時,它會返回一個你不想要的結果。當包含HttpCookie子項或未加密時,IsAuthenticated始終爲false
我使用的代碼看起來非常相似,從這個頁面代碼:
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
username,
DateTime.Now,
DateTime.Now.AddMinutes(30),
isPersistent,
userData,
FormsAuthentication.FormsCookiePath);
// Encrypt the ticket.
string encTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie myCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket)
// Create the cookie.
Response.Cookies.Add(myCookie);
所以,如果我登錄:
http://msdn.microsoft.com/en-us/library/system.web.security.formsauthenticationticket.aspx
我已經從我的項目中的演示中使用的代碼中,一切正常,下面的代碼計算結果爲true: HttpContext.Current.User.Identity.IsAuthenticated;
不過,如果我希望包括子項使用任一版本的myCookie:
myCookie.Values.Add("userName", "patrick"); //version 1
myCookie.Values["userName"] = "patrick"; //version 2
然後添加到Cookies集合:
Response.Cookies.Add(myCookie);
請登錄後刷新頁面:
//This always set to false even after successful log on
HttpContext.Current.User.Identity.IsAuthenticated;
不知道爲什麼!
我想幹的事,我沒有加密值添加到立即的HttpCookie:
//IsAuthenticated doesn't work = false
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormCookieName);
cookie.Values.Add("encryptTicket", encTicket);
這只是奇怪,添加子項根本就不工作。而且我爲了讓它工作而被迫加上一張票。我的意思是,IsAuthenticated始終是false,登錄並驗證或不驗證。任何人都可以嘗試解釋這是怎麼回事?我有一個工作解決方案,但任何見解都會有所幫助。