我用的是Form登录,我想在有请求时如果cookie 的过期时间小于10min重新更改cookie的过期时间。但是cookie的过期时间无法获取!怎么实现页面无操作一段时候后才过期。。Form验证cookie 的过期时间页面过期

解决方案 »

  1.   

    将过期时间存为cookie value一部分
      

  2.   

    问题是貌似cookie的过期时间无法更改。。
      

  3.   

    cookie的过期时间设置为固定值,每次请求时renew cookie的过期时间,以上。
      

  4.   

    我已经这样做了,还是不行,也许和Form验证登录有关。FormsAuthenticationTicket 验证票过期。。
      

  5.   

    没源码 没真相 
    这是登录成功后发放的验证票,过期时间为20min://验证票
                    //System.Web.Security.FormsAuthentication.SetAuthCookie(this.tbLoginName.Text,true);
                    //Create ticket
                    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, tbLoginName.Text, DateTime.Now, DateTime.Now.AddMinutes(20), true, "");
                    //Encrypt the ticket.
                    String encTicket = FormsAuthentication.Encrypt(ticket);
                    //Create the cookie.
                    Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));
    这是每次请求时执行TimeSpan ts = System.Web.HttpContext.Current.Request.Cookies[System.Web.Security.FormsAuthentication.FormsCookieName].Expires - DateTime.Now;
                    if (ts.TotalMinutes < 10)
                    {
                        System.Web.HttpContext.Current.Request.Cookies[System.Web.Security.FormsAuthentication.FormsCookieName].Expires = DateTime.Now.AddMinutes(20);
                        System.Web.HttpContext.Current.Request.Cookies["loginInfo"].Expires=DateTime.Now.AddMinutes(20);
                    }
    结果是不管有页面没有请求到20min就过期了。。
      

  6.   

    结果是不管页面有没有请求到20min就过期了
      

  7.   

    单是修改过期时间没用的,要重新"添加"到Response里...
      

  8.   

    哈哈!问题自己解决了!!在Web.config 的forms标签中加入 slidingExpiration="true" 就行了 ,不用再手动修改coockie的过期时间了!!