第一种:同主域但不同子域之间实现单点登陆
Form验证其实是基于身份COOKIE的验证。客户登陆后,生成一个包含用户身份信息(包含一个ticket)的COOKIE,这个COOKIE的名字就是在web.config里Authentication节form设定的name信息,如
代码实现:
string userData = JsonHelper.ScriptSerialize(user); FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, user.userid.ToString(), DateTime.Now, DateTime.Now.AddHours(4), false, userData); HttpCOOKIE COOKIE = new HttpCOOKIE(FormsAuthentication.FormsCOOKIEName, FormsAuthentication.Encrypt(ticket));//加密身份信息,保存至COOKIE COOKIE.Domain = ".zuowenjun.cn"; Response.COOKIEs.Add(COOKIE);
第二种:虚拟目录的主应用和子应用之间实现SSO
主要是采用页面URL传参并重定向来实现,这类实现的方法有很多,但可能需要注意的是安全性问题。