Cookie不会持久存在

时间:2011-02-22 23:59:47

标签: c# asp.net cookies forms-authentication

我的Cookie存在问题。我正在通过LDAP对用户进行身份验证,只要浏览器保持打开状态,用户就不必重新登录该工具。只要浏览器处于打开状态,他们甚至可以关闭标签。

但是,当用户关闭浏览器时,cookie就会被删除。我为此搜索了很多google,但我无法使用任何解决方案,例如this onethat one

这是我在登录页面上进行身份验证后的设置:

String encryptedTicket = FormsAuthentication.Encrypt(authTicket);

//Create a cookie, and then add the encrypted ticket to the cookie as data.
HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);

//Add expiration date to the cookie
authCookie.Expires = DateTime.Now.AddMonths(1);

//Add the cookie to the outgoing cookies collection.
Response.Cookies.Add(authCookie);

//You can redirect now.
FormsAuthentication.RedirectFromLoginPage(txtUsername.Text, false);

我的Web.Config看起来像这样:

<authentication mode="Forms"> <forms loginUrl="Logon.aspx" timeout="43200" name="adAuthCookie" path="/" slidingExpiration="true" /> </authentication>

无论我做什么,ASP.NET_SessionId和adAuthCookie cookie总是设置为“当我关闭浏览器时”。 我希望避免我的用户在关闭浏览器时始终必须登录,而只是每月一次。

2 个答案:

答案 0 :(得分:0)

听起来你需要在web.config中设置machineKey。 如果没有指定那个或者是machine.config,它将在启动时生成,并在每次重新启动网站时重置,从而使cookie中的加密无效。

machineKey element

答案 1 :(得分:0)

确保浏览器未设置为关闭时删除Cookie。在安全选项中有一些偏执设置(我认为在IE中它是高级 - &gt;安全 - &gt;清空临时文件夹...)

使用Fiddler或其他工具确保将正确过期的Cookie发送到浏览器。这样就可以验证服务器端或客户端错误的位置。