同*域名下 通过Cookie 跨域实现单点登陆

时间:2023-03-09 07:57:47
同*域名下 通过Cookie 跨域实现单点登陆

Cookie对于web开发者而言真是一个小甜饼,因为它保留了用户的登录状态。但是当登陆站点在不同域名时就会出现问题了。

在Cookie规范上说,一个cookie只能用于一个域名,不能够发给其它的域名。因此,如果在浏览器中对一个域名设置了一个cookie,这个cookie对于其它的域名将无效。如果你想让你的用户从你的站点中的其中一个进行登录,同时也可以在其它域名上进行登录。

一、修改hosts文件,搭建环境

首先,在我的电脑找到hosts文件,路径如下C:WindowsSystem32driversetc。

同*域名下 通过Cookie 跨域实现单点登陆

然后,用记事本打开hosts文件,添加你想测试的域名2个。

如a.test.com 和b.test.com。

同*域名下 通过Cookie 跨域实现单点登陆

这样,我们本地浏览器访问a.test.com和b.test.com,都会将访问地址指向本地。

二、COOKIE操作类实现

CookieUtil实现了对cookie基本操作:

首先:添加cookie。

同*域名下 通过Cookie 跨域实现单点登陆

然后:删除cookie。

同*域名下 通过Cookie 跨域实现单点登陆

三、在登陆控制层,当登陆成功,创建cookie

同*域名下 通过Cookie 跨域实现单点登陆

注意:此处要在两个web项目中都要实现,一样的代码即可。

四、在登陆跳转时,首先检测session存在否,然后检测cookie存在否

首先:检测session存在,如存在说明本系统登录过,直接跳转到系统内部。

然后:检测cookie存在,如存在cookie,取得cookie中的用户信息,在后台实现登陆操作即可。

String cookie_login = CookieUtil.getValue(request,Constant.COOKIE_LOGIN);//获取cookie中的登录名

String cookie_pwd = CookieUtil.getValue(request,Constant.COOKIE_PWD);//获取cookie中的密码

最后,在tomcat中将两个域名和两个项目对应绑定即可。

同*域名下 通过Cookie 跨域实现单点登陆

注意:cookie要实现加密。否则被人窃取就不好了。