我难住了。我有一个 MVC3 应用程序,它使用 FormsAuthentication 和自定义令牌(存储一些额外的用户数据)。它适用于 IE。但是,在 Firefox 和 Chrome 中,不遵守 cookie。
Fiddler 中的检查表明,登录后 cookie 在响应中发送到客户端,但在客户端的后续请求(登录后加载主页)中,cookie 不会发送回服务器。
我的代码:
var encryptedCookieString = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedCookieString);
cookie.Expires = ticket.Expiration;
HttpContext.Current.Response.Cookies.Add(cookie);
并获取 cookie:
var cookie = HttpContext.Current.Request.Cookies.Get(FormsAuthentication.FormsCookieName);
以及 Auth 设置的 web.config:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
我查看了 Firefox 和 Chrome 浏览器,但看不到任何关闭 cookie 的地方。
起初我认为这可能是在 localhost 上开发的问题,所以我部署到了培训服务器。同样的故事 - 适用于 IE,不适用于 Chrome 或 Firefox。
有什么线索吗?
更新
我的一位同事能够使用 Chrome 访问它,并且对他有用。所以我不得不相信这是我的 Chrome/Firefox 的错误。此外,我在 VPN 上并在我的开发机器中使用远程桌面。这会导致问题吗?