..." name=Description>

彻底解决session设置timeout不起作用、自动失效的方法

   日期:2017-06-15

最近做了一套信访管理系统,由于上访登记时间较长,所以要求系统设置页面超时时间必须长,不然数据输入完了程序总是提示"用户登录超时,请您重新登录",这样的话,输入的数据就白费了。所以我决定将时间限制设定长一些,就设置5个小时吧,应该够了吧...

 

以下是代码片段:
’-- 设定在5个小时

session.timeout = 300       ’×

 

系统运行环境:win2003+iis6.0+asp
做了多次测试,居然不好用,这是为什么呢,上网找了许多资料,但是都属于session的基础篇,所以狠下心来,也不找了,自己研究吧,但是无论多少次测试却都无效,没办法了,换个方法试试吧,用cookies配合下session,看看效果,这一试问题居然解决了,结果出来了,得出论证了,原来如此,下面我来说下解决方法:

 

以下是代码片段:
’-- 用户登录成功后将用户名及用户级别等一些信息存入session和cookies各一份
session("username")="用户名"
session("userlevel") = "用户级别"
’-- 做份备份
response.cookies("userinfor")("username")="用户名"
response.cookies("userinfor")("userlevel")="用户级别"

’-- 这样一旦session自动失效,你就可以用cookies值来判断
if trim(request.cookies("userinfor")("username"))<>"" then
       session("username")=request.cookies("userinfor")("username")
       session("userlevel")=request.cookies("userinfor")("userlevel")
end if
if trim(session("username"))="" then
      response.write "<script language=’javascript’>alert(’重新登录’);location.href=’登录页’;</script>"
end if

’-- 同时也可以用cookies来限定超时时间,假设设定为1天
response.cookies("userinfor").expires=now()+1

 

这样就可以了,引用这种方法的时候需要注意,在退出登录的时候,将cookies值也清空,不然会有安全隐患。
之所以导致session设置timeout不起作用,session自动失效的原因个人认为就是因为session相对于cookies来说还不够稳定,所以实现timeout这种功能的时候,最好还是用cookies的expires来取代吧.