读书人

单点登录有关问题

发布时间: 2012-05-09 12:13:59 作者: rapoo

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

读书人网 >asp.net

热点推荐