在formsTicket.UserData
未与 MobileSafari (仅限MoblieSafari)合作后,我发现httpContext.User.Identity.Ticket.UserData
为空(在MobileSafari中,而不是其他的)和原始的FormsAuthentication HttpCookie 包含正确的值?!?
怎么可能?!
代码:
public void UpdateContext()
{
if (httpContext.User.Identity is FormsIdentity)
{
// Get Forms Identity From Current User
FormsIdentity id = (FormsIdentity)httpContext.User.Identity;
// Create a custom Principal Instance and assign to Current User (with caching)
HttpCookie cookie = HttpContext.Current.Request.Cookies.Get(FormsAuthentication.FormsCookieName);
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value);
var cookieUserData = ticket.UserData; // not empty
var httpContextIdentiyUserData = id.Ticket.UserData; // empty!
...
}
}
任何线索都会有所帮助!
LG
Warappa
PS:如果重要,我会在iframe中使用我的网站页面 - 同一个域。
答案 0 :(得分:2)
所以问题如下:
当我记录并访问了一个执行 history.back()
的网页时,出现错误。
看看Fiddler的流量我看到,Asp.Net使用 无cookie 身份验证模式,因此身份验证 编码到网址 。现在,当history.back()
发生时,网址指向退出网址现在无效的身份验证信息 ...我身边的恶意错误。
强制Asp.Net使用cookies就行了!
LG
warappa