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失效