需求是:用户输入用户名、密码,验证通过后,用一个变量保存用户的id(方便程序识别登录人), 在用户不关闭ie的情况下,任何长时间内都不需要重新登录验证;一旦用户关闭浏览器,则无论时间长短,都需要重新登录验证;
我用cookie是这样写的,但只能限定时间是否需要登录,不能满足上面需求
DateTime ticketExpires = DateTime.Now.AddHours(10);
DateTime cookieExpires = DateTime.Now.AddHours(10);
FormsAuthenticationTicket Ticket = new FormsAuthenticationTicket(1, su.id.ToString(), DateTime.Now, ticketExpires,
false, string.Empty, "/");
string HashTicket = FormsAuthentication.Encrypt(Ticket);
HttpCookie myCookie = new HttpCookie(FormsAuthentication.FormsCookieName, HashTicket);
myCookie.Expires = cookieExpires; //这是Cookie的有效日期,与前面Ticket的有效日期是不同的概念
Response.Cookies.Add(myCookie);
不用设置Expires,关闭就失效
把登录的名的密码写到一个文件里,关闭IE就把文件里的内容清空。
一点点想法,不知道行得通不。
你可以在Response.Cookies.Add(myCookie);这句话之前设置myCookie的Expires =DateTime.MinValue 这样就是设置cookie
的过期是会话期间完就失效,就是浏览器关闭cookie就失效