2011-02-22 129 views
2

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

但是,当用户关闭浏览器时cookie会被删除。我为此搜索了很多谷歌,并且我无法获得任何解决方案,例如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饼干始终设置为“当我关闭浏览器时”。 我想避免我的用户在关闭浏览器时始终需要登录,而是每月只做一次。

+0

你的'authTicket'看起来像什么,你使用的是什么会员供应商? – Nimrod 2011-02-23 00:49:36

+0

authTicket看起来很正常,CookiePath为“/”,Expired为false,IsPersistent为true等等。我能看到的唯一奇怪的事情是Expiration日期设置为1h后。至于会员供应商,我仍然是新手,但我不相信我在这种情况下使用了一个。 – LanFeusT 2011-02-23 01:24:37

回答

0

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

machineKey element

+0

恐怕没有帮助。我补充说:'''''我也试着添加手动按键, – LanFeusT 2011-02-23 00:35:31

+0

我在这里生成我的[http://aspnetresources.com/tools/machineKey](http://aspnetresources.com/tools/machineKey)确保你的格式正确。尽管如此,这仍然耗尽了我的想法。 – 2011-02-23 00:45:26

+0

谢谢,我尝试过,但仍然没有运气。我向WebConfig的表单部分添加了'protection =“All”',但这并没有什么区别。 Cookie的过期日期仍然设置为“浏览器关闭时”。 – LanFeusT 2011-02-23 01:15:23

0

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

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

+0

浏览器未设置为关闭时删除Cookie。至于期满,我可以看到,实际上ASP.NET_SessionId具有正确的到期日期设置为一个月后。但是,adAuthCookie没有出于某种原因。 – LanFeusT 2011-02-23 00:55:40

+0

“adAuthCookie不过出于某种原因”听起来像是你看到的行为的解释。很奇怪 - 在authCookie上设置cookie过期的代码看起来没问题。您确定这是添加此Cookie的唯一代码吗? – 2011-02-23 02:19:36

+0

对不起,我花了很长时间回复。是的,这是影响此Cookie的唯一代码。我仍然有这个问题:/ – LanFeusT 2011-03-01 23:07:16