日期:2014-05-20  浏览次数:20486 次

FormsAuthenticationTicket的问题
Web.Config   中配置
<forms   loginUrl= "Login.aspx "   defaultUrl= "Default.aspx "   path= "/ "   protection= "All "   timeout= "20 "   cookieless= "UseDeviceProfile "   slidingExpiration= "true "> </forms>

Ticket生成代码
FormsAuthenticationTicket   ticket   =   new   FormsAuthenticationTicket(1,   userName,   DateTime.Now,   DateTime.Now.AddHours(1),   false,   roleStr);

在Web.Config中设置的Cookie过期时间是20分钟(timeout= "20 "),而Ticket生成时设置Ticket的过期时间是1个小时(DateTime.Now.AddHours(1)),这时好像登录验证失效是以Ticket设置的时间为期准。为什么Cookie的失效时间已经到了但是cookie没有消失???为什么会是以Ticket的时间为基准???
Cookie的Expiration与Ticket的Expiration有什么关联??



------解决方案--------------------
我猜是你的Ticket.Expiration覆盖了Cookie的Expiration
------解决方案--------------------
你在Web.Config设置的代码看看,会不会你设置的是SESSION啊!!!或者你在Ticket中的设置和Web.Config中的设置完全一样就可以了嘛!!!
------解决方案--------------------
含有这个ticket的cookie是怎么输出到客户端的?
------解决方案--------------------
Web.Config中设置的Cookie过期时间并不是所有cookie的过期时间

你用自己的cookie当然就不会再受asp.net默认身份验证cookie的影响了

默认的身份验证cookie名称就是web.config里设置的
------解决方案--------------------
但是cookie没有消失 是什么意思

你看着cookie目录 发现它没有消失 ?
------解决方案--------------------
不设置的话

应该是跟随当前会话的浏览器进程而存在

进程关闭则cookie失效