如我的系统设计Session的过期时间为20分种
然后我登录的时候用Session["Login"] 来记录当前登录的是谁
还有用一个Cookies["Login"] 来记录登录的是谁
这个Cookies的过期时间设置和Session过期的时间一样
但问题是:
当用户登录的时候记录下了Seesion和Cookies,但在程序运行时我们如果有对
Session["Login"]进行读写的时候他的过期时间会延长
而Cookies并不能延长
所以就会造成Cookies过期了但Session还没有过期的问题
问:如何让一个Cookies和相应的Session的过期时间一样

解决方案 »

  1.   

    那楼主不是用两个Session不就好了..
      

  2.   

    你可以把Cookies设置的长一些
    然后在Session过期的时候清除Cookies
      

  3.   

    在Session时间更新的时候 ,顺便修改一下Cookie的过期时间就可以了
      

  4.   

    那就在程序读写的时候重新设置一下cookie的过期时间。
      

  5.   

    RE:那就在程序读写的时候重新设置一下cookie的过期时间。
    -------------------------------------------------------
    我也想这样啊,但原来的程序太多地方用到了这个Session
    而且每个地方操作的时候都再来添加那条操作Cookies的不太理想有没有Seesion被用到时触发的过程啊
      

  6.   

    你这个设计好像有点问题,你这样搞的cookie跟session一模一样的功能,那还不如直接用session就好了,干嘛还要用cookie了。cookie本来就是在客户端保存信息的,和session实现的功能完全不一样,为什么一定要把2个搞成一样了。
      

  7.   

    问:如何让一个Cookies和相应的Session的过期时间一样
    ---------------------
    这样其实也不太可能,比如都是20分钟过期,但客户关闭浏览器,那session马上就没了,不用等20分钟,但cookies不会关闭浏览器就没了
      

  8.   

    我主要是用来做单点登录的
    看这一贴:
    |M| 用孟子E章的单点登录代码 再加上Cookies 来实现单点登录 大家看看可以怎么再改进 
    http://community.csdn.net/Expert/topic/5719/5719919.xml?temp=.6906855
      

  9.   

    问:如何让一个Cookies和相应的Session的过期时间一样
    ---------------------
    这样其实也不太可能,比如都是20分钟过期,但客户关闭浏览器,那session马上就没了,不用等20分钟,但cookies不会关闭浏览器就没了
    =============Session会等 20分钟的,这个我测试过
      

  10.   

    这样其实也不太可能,比如都是20分钟过期,但客户关闭浏览器,那session马上就没了,不用等20分钟,但cookies不会关闭浏览器就没了
    ============================================当客户关闭浏览器,并不是Session马上就没了,Session是存放于服务器端的,并不会因为客户端关闭浏览器的操作而销毁。当客户端第一次访问Web服务器的时候,服务器会给用户分配一个SessionID,这个SessionID是存放于客户端浏览器进程中的。这就正如你去银行取钱,钱是在银行(服务器端),但你总的有个标识(客户端存放的SessionID),当客户端关闭浏览器的时候,再打开浏览器,Web服务器会给客户一个新的SessionID,所以虽然服务器端的Session对象没有销毁,但我们已经无法去使用它了,只能等着它因为超时而销毁。
      

  11.   

    每一次进行session["Login"]读取时,当Session 如果没丢失,取值成功的时候,就给cookie的有效时间从新设置下,这样只有Session丢失后一段时间,cookie 自动丢失
      

  12.   

    每次请求,更新目标的过期时间,如在 Application_Start 中// may be ->HttpCookie cookie = Request.Cookies["MyCookieName"];
    cookie.Expires = DateTime.Now.AddMinutes(Session.Timeout);
    Response.Cookies.Set(cookie);
      

  13.   

    需要明确的是,只要服务器接受了某个客户端的请求,不管此次请求,有没有 【读/写】Session, Session 的过期时间都会被重置
      

  14.   

    可以用Cache解决
    Cache对象的依赖项取Session对象
    Session过期Cache失效,这时用一个方法也使Cookie过期
      

  15.   

    技术上,我就不说了,网上有太多的文章了。我说一些费话。一个用户(A),他有正确的账户名和一个正确的密码,他算不算是合法用户??我想算吧。那么,又有一个用户(B),他也有正确的账户名和一个正确的密码,他算不算是合法用户??我想也算吧。那么,Lz,你要实现的单点对于以上情况是什么标准呢??是A能上时,B能上呢,还是只能有一个人能在线呢??我建议采取“只能有一个人能在线”{最初的单点思想,就是保证用户的唯一性,不是吗?},解决方法就是,当A在线时,B如果要上则,B代替A{A将不能以用户身份操作},反之一样。也许你会反对,但我只说一句话“一个账户可能有两个持有都吗?实际中,没人愿意共同持有一个帐户。”
    说到这,如果按我的说法,用Cookie以与Cache就可能了{Cache中保存着最新的用户的ID号和随机数[只有随机数相同才能有权操作系统。]}希望对LZ有帮助。