主题 : 站群 单点登录 最简单的解决方案
级别: 贡士
UID: 1392
积分:430 加为好友
威望: 3 精华: 0
主题:73 回复:142
注册时间:2009-12-18
在线时长:0
1#   发表于:2014-03-25 10:34:23  IP:124.218.*.*
思想介绍:
    1   用户登录时记录cookie,    也就是在CasLoginAct 这个类中的submit 方法中加入 CookieUtils.addCookie(request, response, "fabule_username", user.getUsername(), 5*365*24*60*60, ".fabule.cn");   最后一个参数是你的主域名。
   2 FrontContextInterceptor  在这个前台拦截器中preHandle  方法中加入 Cookie userCookie = CookieUtils.getCookie(request, "fabule_username");
if(user == null && userCookie != null){
String userName = userCookie.getValue();
userId = authMng.retrieveUserNameFromCookie(userName, request);
if (userId != null) {
user = cmsUserMng.findById(userId);
}
}
if (user != null) {
CmsUtils.setUser(request, user);
}
获得用户的cookie 的用户名,如果用户在别的站群中登录过了并且session没有过期那么retrieveUserNameFromCookie  就会获得用户的ID  如果没有值,则证明用户没有登录过。这样当你其它子站中,用户信息就自然显示出来了。实现了单点登录。
3如果退出,那就是全局退出。

优点:简单,方便。
缺点:但不支持跨域名,(技术上好象有cooike跨域解决方案),如  a.com     bbs.a.com   c.a.com 都好使,但 b.com 就不好使了。
要求要部署在一个应用下,用一个数据库。

你可以在你的本地测试试, 修改etc  域名映射    127.0.0.1   a.com     127.0.0.1  bbs.a.com     我都试过 了,很好用。这个方法想法了好几天,最后就这么几行代码解决了。唉。
级别: 举人
UID: 1328
积分:151 加为好友
威望: 0 精华: 0
主题:11 回复:80
注册时间:2009-12-10
在线时长:0
2#   发表于:2014-03-27 17:07:07  IP:218.137.*.*
牛人一枚
1 共1页