WEB服务 单点登出 不了的问题

子站登出代码

if (Session != null)

                    Session.Abandon();
                FormsAuthentication.SignOut();

                HttpContext.Current.Response.Cookies.Clear();


主站退出的时候调用子站web服务通知子站 再次登录发现COOKIE依然存在


在    HttpContext.Current.Response.Cookies.Clear();


之前加上这句 发现还是不行
                
                HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName].Expires = DateTime.Now.AddYears(-1);


然后再登录的地方发现代码

int TimeOut = ConfigurationManager.AppSettings.GetString("timeout").ToInt32(5);
      
            FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now.AddMinutes(TimeOut), false, cook.ToString());
            string authTicket = FormsAuthentication.Encrypt(ticket);
            HttpCookie coo = new HttpCookie(FormsAuthentication.FormsCookieName, authTicket);
            HttpContext.Current.Response.Cookies.Add(coo);             

加上
            coo.Expires = DateTime.Now.AddMinutes(TimeOut);

这句后 单点登出就有效了


不设置COOKIE的过期时间 过期时间的默认值一直是 0001/1/1,即当前COOKIE有效的。 而HttpContext.Current.Response.Cookies.Add(coo);    似乎清除不了COOKIE

  身份验证 每次先找COOKIE cookie没过期则表示身份仍然有效



你可能感兴趣的:(WEB服务 单点登出 不了的问题)