打算在登陆页面加一个下拉框选择记住登陆帐号的时间(一天,一周)。代码如下://帐号验证正确后,做以下处理FormsAuthentication.RedirectFromLoginPage(Text_username.Value.ToString(),true);
     
      authCookie=Response.Cookies[FormsAuthentication.FormsCookieName];
      switch(DropDownList_expired.SelectedValue.ToString())
      {
       case "1":
        authCookie.Expires=DateTime.Now+ new TimeSpan(1,0,0,0);
        break;
       case "2" :
        authCookie.Expires=DateTime.Now + new TimeSpan(7,0,0,0);
        break;
       default:
        break;
       }      
     Response.Cookies.Add(authCookie);我选择了记住一天,但是结果是过去好几天了,cookie依然生效,不需登陆,这不是我的初衷,看了好几天MSDN也没有看到对应的例子,不是不记忆帐号的,就是永久记忆的。大家帮我看看我的方法问题出在哪里?

解决方案 »

  1.   

    这样吧public void SaveCookie(string CookieName,string CookieValue)
    {
    HttpCookie myCookie = new HttpCookie(CookieName);
    DateTime now = DateTime.Now; myCookie.Value = CookieValue; myCookie.Expires = now.AddHours(Convert.ToDouble(this.DropDownList.SelectedItem.Value));
    if(this.Response.Cookies[CookieName]!=null)
    this.Response.Cookies.Remove(CookieName); this.Response.Cookies.Add(myCookie);
    }调用 SaveCookie("username","Nils")
    把DropDownList的value设成24  720  8640  就是一天一月一年。就行了我在用的,没有问题
      

  2.   

    Nils:您这段代码好像只是对Cookie进行操作/设置有效时间。这个我能理解。我的问题似乎出在如何把Cookie有效时间设置作用在FormsAuthentication.RedirectFromLoginPage所创建的已验证用户的cookie呢? 我用authCookie=Response.Cookies[FormsAuthentication.FormsCookieName];得到的cookie是否是验证用户的cookie,有不太明白。