FormsAuthentication:UserData丢失(但在Cookie中)

时间:2011-05-19 14:08:16

标签: cookies forms-authentication mobile-safari user-data

  • Asp.Net MVC 3
  • FormsAuthentication(自定义)
  • iPad MobileSafari
  • iframe(同域)

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中使用我的网站页面 - 同一个域。

1 个答案:

答案 0 :(得分:2)

所以问题如下:
当我记录并访问了一个执行 history.back() 的网页时,出现错误。

看看Fiddler的流量我看到,Asp.Net使用 无cookie 身份验证模式,因此身份验证 编码到网址 。现在,当history.back()发生时,网址指向退出网址现在无效的身份验证信息 ...我身边的恶意错误。

强制Asp.Net使用cookies就行了!

LG
warappa