asp.net mvc/.net core mvc中,跨子域名的单点登陆的要点

这里只讲跨子域名的单点登陆,适合有一定基础及了解的人看
假设有站点a.xxx.com和站点b.xxx.com(俩站点为跨子域名的站点)
1、既然要实现单点登陆,那么这两个站点必须有共同的数据来进行状态传递,也就是我们平时说的token
2、在站点a.xxx.com进行登陆成功后,对cookie赋一个值,key=token,value=abc123;

	HttpCookie cookie = new HttpCookie("c_token","abc123");
    cookie.Domain = "xxx.com";//跨域的关键
    Response.AppendCookie(cookie);

3、但是因为域名不一样,我们在请求b.xxx.com的时候,理论上,是不会将a.xxx.com的cookie带到b.xxx.com去了,这时候关键点就是上面给cookie赋值时的cookie.Domain = "xxx.com";这句代码的意思,就是cookie将会给所有以xxx.com结尾的域名请求时,附带上我们的cookie;
4、也就是说我们在请求b.xxx.com时,也会有key=token,value=abc123的cookies;这时候我们就能知道,用户登陆过了,然后拿我们的token拿去验证有效性,即可决定是否让用户免登陆;
5、注销时,要用这种方法设置cookies过期,这样就可以一下子注销所有子域名站点

			HttpCookie cookie = Response.Cookies["c_token"];
            cookie.Expires = DateTime.Now.AddDays(-20);
            cookie.Domain = "yyy.com";

而下面这种方法注销是无效的

			Response.Cookies.Remove("c_token");

注:
1、这两个站点中间,必须有个用户中心,去验证用户的帐号密码、生成token、验证token、返回用户信息;
2、完全跨域的方法也是大同小异,要点只在于,在完全跨域的情况下,如何共享cookie

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值