单点登录问题
现在有一份代码 部署成两个网站 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/