日期:2014-05-17  浏览次数:20480 次

单点登录问题
现在有一份代码 部署成两个网站 a.ssodemo.com b.ssodemo.com 
  private void SetCookie(string name, string data)
  {
   
  if (Request.Cookies[FormsAuthentication.FormsCookieName]==null)
  {
  DateTime expiration = DateTime.Now.AddMinutes(FormsAuthentication.Timeout.Minutes);
  FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, name, DateTime.Now, expiration,
  false, data, FormsAuthentication.FormsCookiePath);
  string encryptTicket = FormsAuthentication.Encrypt(ticket);

/如果采用了这句话,那么GetCookie中是 如果是A写入Cookie 那么B就获取 不到了 ;反过来B写Cookie A也获取不到
  //HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptTicket);

//这句话 可以获取到 A B 共享了Cookies 不知道是不是票据Ticket的特殊性
  HttpCookie cookie = new HttpCookie("ShareCookies", data);
   
  cookie.Domain = FormsAuthentication.CookieDomain;
  HttpContext.Current.Response.Cookies.Add(cookie);
  }
  }

  void GetCookie()
  {
  //FormsAuthenticationTicket ticket = ((FormsIdentity)HttpContext.Current.User.Identity).Ticket;
  string data = Request.Cookies["ShareCookies"].Value; //ticket.UserData;

  lblMsg.Text = data;

  Session[key] = data + Request.Url.Host;

  }

另外Session共享
webconfig中配置了
  <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" >
   
  </sessionState>

protected void Session_Start(object sender, EventArgs e)
  {
  const string ASPNET_SessionId="ASP.NET_SessionId";
  Response.Cookies[ASPNET_SessionId].Value = Session.SessionID;
  Response.Cookies[ASPNET_SessionId].Domain = FormsAuthentication.CookieDomain;
  }

a站点 b站点 SessionID一样 但Session[key]不一样
没有共享到 各自有各自的Session值

怎么共享Session?

------解决方案--------------------
可以共享的
http://msdn.microsoft.com/zh-cn/library/eb0zx8fc.aspx
http://cfeng518.blog.163.com/blog/static/17467732201061410585332/