因系统需求,需要实现两个系统的单点登陆,即两个域名:www.a.com,www.b.com,任意登陆一点则两点都实现登陆。
大致的方案有几个:
1.用微软的passport,
2.单独设置一个验证服务器,session结合数据库记录的方式来实现难,
3.用cookie简单实现跳转。
第三种方法比较简单,是两个小系统,所以采用第三种方案来实现。
刚开始想的比较简单,以为cookie可以跨域,测试了大半天,都没有成功,不能跨越a.com与b.com,只能实现半跨域,也就是x.a.com,y.a.com。
最终只能通过两个网站互相转向的方式来解决。这种解决方案网上比较多,不再累述。
下面是.net里操作cookie的基本方法:
写入:
| 以下为引用的内容: HttpCookie cookie = new HttpCookie("id_admin_"); cookie.Value = model.id_admin_.ToString(); //cookie.Domain = ".sosuo8.com"; HttpContext.Current.Response.Cookies.Add(cookie); cookie = new HttpCookie("name_admin_"); //可能是中文字符,必须经过编码 cookie.Value = HttpUtility.UrlEncode(model.name_admin_); //cookie.Domain = ".sosuo8.com"; HttpContext.Current.Response.Cookies.Add(cookie); cookie = new HttpCookie("guid"); cookie.Value = Guid.NewGuid().ToString(); //cookie.Domain = ".sosuo8.com"; HttpContext.Current.Response.Cookies.Add(cookie); |
读取:
| 以下为引用的内容: HttpContext.Current.Request.Cookies["guid"].Value |
asp.net清空cookie
| 以下为引用的内容: Response.Cookies["admin"].Expires = DateTime.Now.AddDays(-1); |
asp.net清空cookie 清空所有
| 以下为引用的内容: HttpCookie aCookie; string cookieName; int limit = Request.Cookies.Count; for (int i = 0; i < limit; i++) { cookieName = Request.Cookies[i].Name; aCookie = new HttpCookie(cookieName); aCookie.Expires = DateTime.Now.AddDays(-1); Response.Cookies.Add(aCookie); } |

