已经研究两天了,今天下午的时候,子域名可以获取到 顶级域名的 用户信息,就是注销的时候,顶级域名的用户信息注销不了。 然后我把它拷回家去,结果连 子域名连 顶级域名的 用户信息都获取不到了 ,我快崩溃了~~~form身份验证  单点登录 sso

解决方案 »

  1.   

     首先我说说我的需求吧    比如 顶级域名  www.hh.com    二级域名  a.hh.com    b.hh.com
     
    如果我在顶级域名登陆了或者 二级域名登陆了   就代表  我在其他的域名不用另外登陆  登陆的时候   我是这样的 FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, UserEmail.Text, DateTime.Now , DateTime.Now.AddMinutes(30), false, RoleName(this.UserEmail.Text),"/" );//将票据加密 
      string authTicket = FormsAuthentication.Encrypt(ticket);
                    
    //将加密后的票据保存为cookie  ,FormsAuthentication.FormsCookieName就是配置文件的<forms>里的name属性的值
    HttpCookie coo = new HttpCookie(FormsAuthentication.FormsCookieName, authTicket);
    coo.Expires = ticket.Expiration;
     coo.Domain = ".hh.com";
     //使用加入了userdata的新cookie 
      Context.Response.Cookies.Add(coo);就是想通过Domain属性 将 cookie传给子域名
      

  2.   


    HttpCookie coo = Request.Cookies[FormsAuthentication.FormsCookieName];
    coo.Domain = ".hh.cn";
    coo.Expires = DateTime.Now.AddDays(-10);
    coo.Path = "/";
     Response.Cookies.Remove(FormsAuthentication.FormsCookieName);
    Response.Cookies.Add(coo);
    Response.Write("<br/>" + Request.Cookie
                [FormsAuthentication.FormsCookieName].Value);
      

  3.   

    我现在   顶级域名的cookie值都传 不过去了
      

  4.   

    注销写的有问题 :
    HttpCookie coo= Request.Cookies[FormsAuthentication.FormsCookieName];如果cookie 有中文或者什么 这个coo就乱码 你在查找的时候 肯定找不到
      

  5.   


                HttpCookie cookie = Request.Cookie[FormsAuthentication.FormsCookieName];
                cookie.Expires = DateTime.Now.AddDays(-2);
                cookie.Domain = ".hh.cn";
                cookie.Path = FormsAuthentication.FormsCookiePath;
                HttpContext.Current.Response.Cookies.Add(cookie);
                Response.Clear();
                Session.RemoveAll();
                FormsAuthentication.SignOut();
                FormsAuthentication.RedirectToLoginPage();//跳转到登陆页试试这个行不。