想要实现在系统超时后,在不进行任何操作的情况下自动转到登陆页面(为了避免超时后用户输入一堆东西然后提交才跳转,这些输入就白作了),有没有办法实现,能给代码最好,谢谢!

解决方案 »

  1.   

    是不是每个页面加一个定时器?不断的去读session状态(可以用ajax),当超时,直接redirect到登录页面。
    如果还有一种方式,你可以在超时,弹出一个页面让用户去登录,而不影响用户输入的当时页面数据。
      

  2.   

    弹出页面 点击确定跳转到 login页面
      

  3.   

    我写的web应用从来不超时,许多时候用户出去1个小时之后回来继续进行下面的操作。道理很简单,不要使用Session不就完了嘛。
      

  4.   

    这个FWQ端做我觉得不是很好吧,时时让客户端去回调FWQ很浪费资源的说
    我觉得用JS做个假的就可以了,如果用户没有做任何操作的时间到了FWQ定的过期时间就让他重新登陆
      

  5.   

    别用session做验证.超时来超时去的多麻烦呀.
      

  6.   

    如果你要保存用户登录号,写入cookie就可以了(而我实际上为用户登录分配一个会话passportId号写入cookie,基本上是一样的意思),只要用户不关闭浏览器窗口,它永远不会超时。为什么总是跟所谓的“超时——重新登录”较劲呢?一次性地彻底抛开这个问题。
      

  7.   

    定时刷新页面,可以使用AJAX。同意4楼的说法
    不要使用Session
    使用Cookie代替
      

  8.   

    别用session做验证. 超时来超时去的多麻烦呀. 
      

  9.   

    如果你使用一个比较好用的ORM工具,哪怕是Linq to SQL也好,那么你的数据库编程效率大大提高很多倍。此时,很多信息可以考虑放在数据库中,后期还可以使用数据缓存来加速。这样,“cookie+数据库”来维系业务数据,包括临时的数据,就可以了。实际上,很多写入数据库的临时数据就算每隔几天才删除一次也没有关系,数据库完全可以装几天临时数据。这样,就算服务器每隔5分钟就经常重新启动一次,你的客户也感觉不到网站丢失了什么操作,用户体验会好。
      

  10.   

    一般来说,纯粹的会话数据并不多,大多数也就是“登录信息”等少数数据。为了这几条数据,跟“session超时”作战(实际上生产服务器上往往不是超时,而是时间没到就丢失了)就比较累了,这几条数据放入cookie就可以了。当然,编程的思路需要调整,但是很值得为了可靠性、用户体验而调整编程思路,放弃用session作数据持久化。
      

  11.   

    我补充一个关于数据缓存的例子:public static UserPasport GetUser(string passportId)   //返回用户登录时为他分配的通行证对象
    {
        Cache ch=HttpContext.Current.Cache;
        UserPassort pass=ch[passportId] as UserPassport;
        if(pass==null)
        {
             pass=读取数据库生成通行证(passportId);
             ch[passportId]=pass;
        {
        return pass;   //pass.User属性包含了用户的消息个人信息。
    }当用户登录时,要把新创建的通行证对象保存入数据库,这样就算服务器断电了,十分钟之后重新来电之后启动服务器之后客户端也不受影响继续操作。读取对象首先是读取内存的,而不是读取数据库。
      

  12.   

    if (Session["userid"] == null)
            {
                Response.Write("<script>alert('超时,请重新登录');top.location.href='longin.aspx';</script>");
                return;
            }
      

  13.   

    pass.User属性包含了用户的消息个人信息      -->      pass.User属性包含了用户的详细个人信息
      

  14.   

    如果系统安全性比较高,还是要用session来判断超时的。