【发布时间】:2012-11-29 16:44:38
【问题描述】:
背景:
- AspNet 网络应用程序/C# 3.5
- IIS7
- VS 2010
- Windows 7
当用户被认证时,我们创建一个cookie,这样:
var cookieASP = FormsAuthentication.GetAuthCookie(user.Id, true);
cookieASP.Domain = "x.y.local";
是的,domain 在此示例中是硬编码的。
使用 Firefox 11 中的 cookie 查看器扩展,我可以看到 cookie 的 domain 是:.x.y.local,前面有 .。我知道它允许w.x.y.local 和q.x.y.local 之间共享cookie。好的。
但是,当用户点击断开连接时,他并没有被踢出...
var cookieAsp = System.Web.Security.FormsAuthentication.GetAuthCookie(u.Identifiant, true);
cookieAsp.Expires = DateTime.Now.AddDays(-10);
Response.Cookies.Set(cookieAsp);
FormsAuthentication.SignOut();
使用调试器我们可以看到cookieAsp.Domain 为空。并且 cookie 不会从浏览器的 cookie 中删除。
如果我编辑 cookie 域(直接从浏览器),并将其域设置为 x.y.local没有前导 .,则 cookie 被删除并且用户断开连接。
不明白为什么要添加这个.,为什么浏览器不能很好理解。
编辑(我猜很重要):我们这样做是因为如果我们不设置domain,那么IE8(只有8)就无法理解我们的cookie...
【问题讨论】:
标签: asp.net cookies forms-authentication