文章目录
一,膜拜大神许雪里
开源项目xxl-job,相信大多数人都学习或者使用过,一个非常优秀的分布式任务调度平台,其作者是许雪里,xxl是他名字的拼音首字母。
这一节内容,我们将学习他的另一大作,开源的单点登录框架:xxl-sso
。
二,用开源框架xxl-sso演示单点登录
1,我是老板,我有三个网站
假设我是一个互联网公司的老板,公司有三个网站,域名分别是:
- ssoserver.com,单点登录网站
- xxl-mall.com,购物商城
- xxl-invest.com,投资赚钱网站
要实现单点登录,即上面三个网站中任一个网站登录成功后,其他网站不用登录即可获得用户登录的效果。
2,配置域名
把下面三个域名都映射到本地IP。
- ssoserver.com
- xxl-mall.com
- xxl-invest.com
3,下载xxl-sso代码
项目托管在gitee,地址:https://gitee.com/xuxueli0323/xxl-sso
使用Idea克隆到本地。
4,服务规划
我们要启动三个项目:
注意后面两个服务是xxl-sso下的同一个模块,但是端口不同,访问时使用的域名也不相同。
- 单点登录服务:xxl-sso-server,访问地址:
ssoserver.com:8080/xxl-sso-server
- xxl-mall服务:xxl-sso-samples,访问地址:
xxl-mall.com:8081/xxl-sso-web-sample-springboot
- xxl-invest服务:xxl-sso-samples,访问地址:
xxl-mall.com:8082/xxl-sso-web-sample-springboot
5,配置修改
在启动项目之前,要修改一下项目的redis配置,修改自己虚拟机的IP。
5.1 xxl-sso-server redis配置修改
5.1 xxl-sso-samples r配置修改
注意,如下图所示,要修改两个地方:
- 单点登录服务的域名,我们在hosts配置的是
ssoserver.com
,和默认的不一致,要修改为我们配置的域名 - redis的IP
6,启动项目
6.1 启动sso-server项目
直接启动启动类即可。
启动成功后在浏览器中输入如下地址访问。
ssoserver.com:8080/xxl-sso-server
页面效果如下图。
6.2 启动sso-samples项目
我们要用同一个模块模拟两个服务,不能直接启动,首先需要做一个简单的配置。
配置允许一个模块启动多个实例
在Idea的启动配置界面,配置允许运行多个实例。
指定端口8082启动第二个服务xxl-mall
右键模块xxl-sso-web-sample-springboot
,按下图操作。
打开启动配置界面,在配置界面配置环境变量server.port=8082
。
修改之后,右键启动类,启动服务。
指定端口8081启动第一个服务xxl-mall
和上一步操作相同,但是端口是8081,打开启动配置界面,在配置界面配置环境变量server.port=8081
。
修改之后,右键启动类,启动服务。
注意,虽然启动的是同一个启动类,但是因为端口不同,实际上是启动了两个服务。
7,访问服务查看页面效果
按照下面地址访问三个服务。
- 单点登录服务:xxl-sso-server,访问地址:
ssoserver.com:8080/xxl-sso-server
- xxl-mall服务:xxl-sso-samples,访问地址:
xxl-mall.com:8081/xxl-sso-web-sample-springboot
- xxl-invest服务:xxl-sso-samples,访问地址:
xxl-mall.com:8082/xxl-sso-web-sample-springboot
7.1 三个服务都不登录
7.1.2 xxl-mall服务:xxl-sso-samples
浏览器地址输入xxl-mall.com:8081/xxl-sso-web-sample-springboot
,因为没有登陆过,所以重定向到单点登录服务的登录界面
7.1.3 xxl-mall服务:xxl-sso-samples
浏览器地址输入xxl-mall.com:8082/xxl-sso-web-sample-springboot
,同上面一样,因为没有登陆过,所以也会重定向到单点登录服务的登录界面
7.2 任一个服务登录
任选一个服务登录,然后重新访问其他两个服务。
登录成功后,重新访问其他两个服务,发现无需再次登录。
这就是单点登录的效果,对于多个域名完全不同的系统,只需要登录一次即可。