form验证,登录后为什么一会儿就自动登录超时,要求重新登录呢?

jerrycool 2006-09-13 11:34:10
登录代码为:
//设置登陆信息
string Role="Administrator";//角色:管理员
//建立role-based认证票据
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1,Name,DateTime.Now,DateTime.Now.AddMinutes(120),true,Role);
//修改票据cookie,使其加密(本质是写入一个与票据cookie同名的新cookie)
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName,encryptedTicket);
authCookie.Expires = DateTime.Now.AddMinutes(120);
//cookie的有效时间
Response.Cookies.Add(authCookie);
//重新定向到请求的URL.不要使用FormsAuthentication.RedirectFromLoginPage方法,因为这个方法会重写cookie
string url = FormsAuthentication.GetRedirectUrl(Name,false);
if(url.ToLower().IndexOf("default.aspx") > 0)
{
url = "setup.aspx";
}
Response.Redirect(url);

web.config文件里,timeout=120
后台页面是5分钟刷新一次,管理员登录后,离开一会,再回来就跳到了登录页面...
老大要求:只要浏览器不关,登录后就永不会超时.关闭后就需要重新登录.目前的form验证最好不要改.
...全文
818 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
syeerzy 2006-10-28
  • 打赏
  • 举报
回复
用持久性的Cookie,不清空的话理论上是50年,还不够你牛逼啊

不过注意有些浏览器要是设置了清空的选项,那你就是五千年也没用.
wwwxyzlnet 2006-10-28
  • 打赏
  • 举报
回复
有一些用户反应登陆后很快就退出的问题,大体上的原因还是因为所用的服务器设置了很低的session缓存保存时间造成的,就是为了减少服务器资源的开支,但是牺牲了用户的性能
jerrycool 2006-09-17
  • 打赏
  • 举报
回复
jerrycool 2006-09-16
  • 打赏
  • 举报
回复
程序中,我没有多次生成其他cookie啊
scow 2006-09-16
  • 打赏
  • 举报
回复
那有什么其它程序可能会定期清理机器上的cookie呢,猜测。再俺也不知道了。
jerrycool 2006-09-15
  • 打赏
  • 举报
回复
<meta http-equiv="Refresh" content="300">
我加了这行代码的,不过刷新几次后,就超时了...
huanglang 2006-09-15
  • 打赏
  • 举报
回复
定时自动刷新一个隐藏的空白页面,不过这样做会增加Web服务器的负载.
scow 2006-09-15
  • 打赏
  • 举报
回复
持久化cookie是存在硬盘上的
C:\Documents and Settings\current user\Cookies
scow 2006-09-15
  • 打赏
  • 举报
回复
站点在客户端存放的cookie个数有限制,你有没有在程序中多次生成其他的cookie
jerrycool 2006-09-14
  • 打赏
  • 举报
回复
硬盘上相应的cookie??没有看过呢.
scow 2006-09-14
  • 打赏
  • 举报
回复
超时后,硬盘上相应的cookie也没了吗?
jerrycool 2006-09-14
  • 打赏
  • 举报
回复
顶一顶
jerrycool 2006-09-13
  • 打赏
  • 举报
回复
wwwxyzlnet 2006-09-13
  • 打赏
  • 举报
回复
mark
jerrycool 2006-09-13
  • 打赏
  • 举报
回复
web.config里的timeout是120
然后我在程序里设置的timeout也是120,发现没到120就超时了要求重新登录了
改为DateTime.MaxValue,同样
再改为FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1,Name,DateTime.Now,DateTime.Now.AddDays(1),true,Role);依然...

关闭浏览器后要重登录的问题暂时可以不用考虑.

现在最急的是,为什么明明是120分钟以上超时,偏偏20分钟都不到就超时了.
scow 2006-09-13
  • 打赏
  • 举报
回复
若不是持久Cookie,Cookie的有效期Expiration属性是当前时间加上web.config中timeout的时间
scow 2006-09-13
  • 打赏
  • 举报
回复
关闭浏览器后就需要重新登录,那就不能用持久Cookie
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1,Name,DateTime.Now,DateTime.Now.AddMinutes(120),false,Role);
这是只能把web.config中的timeout尽量设长,但也不能保证就永不会超时
jerrycool 2006-09-13
  • 打赏
  • 举报
回复
那要怎么样做???

构造FormsAuthenticationTicket的时候已经指定了Cookie过期时间
为什么后面又指定一次?

这个问题先不说
viena 2006-09-13
  • 打赏
  • 举报
回复
构造FormsAuthenticationTicket的时候已经指定了Cookie过期时间
为什么后面又指定一次?
viena 2006-09-13
  • 打赏
  • 举报
回复
既然Cookie是持久的,为什么还要设过期时间?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧