我的Cookie存在问题。我正在通过LDAP对用户进行身份验证,只要浏览器保持打开状态,用户就不必重新登录该工具。只要浏览器处于打开状态,他们甚至可以关闭标签。
但是,当用户关闭浏览器时,cookie就会被删除。我为此搜索了很多google,但我无法使用任何解决方案,例如this one或that 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总是设置为“当我关闭浏览器时”。 我希望避免我的用户在关闭浏览器时始终必须登录,而只是每月一次。
答案 0 :(得分:0)
听起来你需要在web.config中设置machineKey。 如果没有指定那个或者是machine.config,它将在启动时生成,并在每次重新启动网站时重置,从而使cookie中的加密无效。
答案 1 :(得分:0)
确保浏览器未设置为关闭时删除Cookie。在安全选项中有一些偏执设置(我认为在IE中它是高级 - &gt;安全 - &gt;清空临时文件夹...)
使用Fiddler或其他工具确保将正确过期的Cookie发送到浏览器。这样就可以验证服务器端或客户端错误的位置。