我有以下代碼:用戶進行身份驗證,但Ticket.UserData缺少
if (HttpContext.Current.Request.IsAuthenticated == false)
{
// this isn't reached so i know user is Authenticated
return;
}
FormsIdentity fIdentity = HttpContext.Current.User.Identity as FormsIdentity;
string[] delimitedUserData = fIdentity.Ticket.UserData.Split('|');
// but at this point delimitedUserData.Length is 0
什麼會導致認證憑證是有效的任何想法尚的UserData沒有了嗎?
我的程序通常工作得很好,所有的UserData都可以輕鬆訪問。但每隔一段時間我都會進入UserData不存在的狀態。
「請注意,User.Identity.IsAuthenticated返回true開箱即用」,該陳述是對發生的事情的嚴重誤導。 ASP.NET中的標準GenericPrinciple類實現了IsAuthenticated類似於get {return!string.IsNullOrEmpty(Name); }`如果user.Identity.Name具有您認證的值。這是一個有效的斷言,因爲真正開箱就不會有user.Identity.Name。只有在代碼中手動修改它(持續1個HTTP請求)或使用Forms Auth,才能在授權請求事件期間同步它的FormsIdentity。 – 2011-02-11 18:22:51