在我的mvc3应用程序中,我将每个用户的数据保存到会话中。
HttpContext.Current.Session["UserName"] = "Jon";
问题出在Safari浏览器中。 默认设置为:“阻止来自第三方和广告商的Cookie”。因此会话未保存。我找到了解决方案:
var ticket = new FormsAuthenticationTicket(
1,
"currentUser",
DateTime.Now,
DateTime.Now.AddMinutes(30),
false,
null);
string encryptedTicket = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
this.Response.Cookies.Add(cookie);
但是此解决方案仅适用于localhost,不适用于服务器... 有没有人有这个问题的替代解决方案?或者可以解释为什么我的解决方案无法在服务器上运行?
答案 0 :(得分:0)
尝试将Cookie的Domain属性设置为与您的工作服务器所在域的名称完全匹配,如下所示:
var cookie = new HttpCookie(...
cookie.Domain = "Microsoft.com";
一旦你这样做,你的cookie就是第一方cookie(而不是第三方cookie)。