我刚刚从 VS2010 升级到 VS 2012,并且在使用 FormsAuthentication 时遇到了一些问题。
我有一些旧代码创建了一个自定义身份验证 cookie 来在其中存储 som 信息:
public static int SetAuthCookie<T>(this HttpResponse responseBase, string name, bool rememberMe, T userData)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
var cookie = FormsAuthentication.GetAuthCookie(name, rememberMe);
var ticket = FormsAuthentication.Decrypt(cookie.Value);
var newTicket = new FormsAuthenticationTicket(ticket.Version,
ticket.Name,
ticket.IssueDate,
ticket.Expiration,
ticket.IsPersistent,
serializer.Serialize(userData),
ticket.CookiePath);
var encodedTicket = FormsAuthentication.Encrypt(newTicket);
cookie.Value = encodedTicket;
responseBase.Cookies.Add(cookie);
return encodedTicket != null ? encodedTicket.Length : 0;
}
}
升级到 .Net 4.5 之后,HttpContext.Current.Request.IsAuthenticated 始终为空。我已经看到在 .Net 4.5 中有一种新的身份验证方法,但我宁愿不使用它,因为我将无法从 .Net 4.0 升级生产环境。使用自定义身份验证 cookie 时有没有办法设置身份验证?