上一篇文章《单点登录(一)使用Cookie+File实现单点登录》中,我们实现了单点登录的功能。
本文作为上一篇文章的扩展部分,添加“单点登出”功能。
源码下载:链接: http://pan.baidu.com/s/1bn57xCF 密码: 5apa
本例实现效果
浏览器中输入网址:main.tgb.com,后输入用户名:it_main(以it开头即可)和密码pwd_main(以pwd开头即可),勾选“一周内自动登录”。点击“登录”按钮。即可实现单点登录功能。访问关联的网站,点击news.tgb.com/bbs.tgb.com,则无需输入:用户名和密码。点击“安全退出”按钮,则3个网站同时退出。
实现原理
首次登录main网址,需要输入用户名和密码。验证通过后,将在Cookie中保存一份用户名和密码(3网址公用的),同时保存有一份Session(只针对于main的session)。当访问关联网站(如:news)时,首先从关联网站中查询各自的session(如news的session)中是否包含用户名和密码,若session为空,则查询cookie中的值,并赋值给关联网站的news的session,此时访问news网址时,无需登录。
单击“安全退出”,则清空Cookie,同时清空3个网址的session。此时,若仍想登录网站,必须重新输入用户名和密码。
点评
利用Cookie和Filter实现的单点登录,有其局限性【main.tgb.com news.tgb.com bbs.tgb.com 】,只能针对于域名为“.tgb.com”的网址进行共享。
若要实现不同域名之间的单点登录【如:main.com news.com bbs.com】,请参加下一篇文章..........
操作步骤
1.在C:\Windows\System32\drivers\etc中的hosts文件中,添加如下节点(直接添加在文件最后即可):
127.0.0.1 bbs.tgb.com
127.0.0.1 news.tgb.com
127.0.0.1 main.tgb.com
2.在C:\tomcat\apache-tomcat-6.0.35\conf\server.xml中修改HTTP/1.1中的默认端口:由8080改为80,如下所示:
<Connector connectionTimeout="20000"
port="80" protocol="HTTP/1.1" redirectPort="8443"/>
3.将main.zip,news.zip,bbs.zip解压后,直接拷贝到apache-tomcat-6.0.35中。
4.启动tomcat,如: C:\tomcat\apache-tomcat-6.0.35\bin中双击startup.bat命令
5.浏览器中输入:main.tgb.com
6.输入用户名:it_main(以it开头即可)和密码pwd_main(以pwd开头即可),勾选“一周内自动登录”。点击“登录”按钮。
7.访问关联的网站,点击news.tgb.com/bbs.tgb.com,则无需输入:用户名和密码。
8.查看浏览器中Cookie和Session中的值
9.点击“安全退出”按钮,则3个网站同时退出。
版权声明:本文为博主原创文章,未经博主允许不得转载。