JForum 的 SSO集成的问题解决方法2008-06-27 10:49:40 来源:中国自学编程网 作者:佚名 点击:
关于JForum论坛的基本情况就不在此介绍了,官方网址:www.jforum.net.jforum论坛系统的安装也很简单,按照官方文档,或者google一下,基本都可以搞定,在此就不在介绍了 ![]() 关于JForum论坛的基本情况就不在此介绍了,官方网址:www.jforum.net.jforum论坛系统的安装也很简单,按照官方文档,或者google一下,基本都可以搞定,在此就不在介绍了。大概描述一下我使用jforum的情况: 1.应用服务器:weblogic8.1 2.数据库:oracle10g 3.已有一个电子商务网站,需要和jforum进行简单的集成,提供sso(单点登录的功能)。 4.说明:已有的电子商务网站域名:http://www.123.com jforum域名:www.123.com/forum,电子商务网站和jfroum在统一台服务器和同一应用服务器下,如果分开可能会存在session或cookie访问的问题。 5.JForum版本:2.1.8 下面简要的介绍一下使用cookie进行jforum和电子商务网站的sso集成的过程: (1)实现net.jforum.sso接口 public class CookieUserSSO implements SSO { static final Logger logger = Logger.getLogger(CookieUserSSO.class.getName()); public String authenticateUser(RequestContext request) { // login cookie set by my web LOGIN application Cookie cookieNameUser = ControllerUtils.getCookie(SystemGlobals .getValue(ConfigKeys.COOKIE_NAME_USER)); String username = null; if (cookieNameUser != null) { username = cookieNameUser.getValue(); } logger.info("cookie username="+username); System.out.println("cookie username="+username); return username; // return username for jforum // jforum will use this name to regist database or set in HttpSession } public boolean isSessionValid(UserSession userSession, RequestContext request) { Cookie cookieNameUser = ControllerUtils.getCookie(SystemGlobals .getValue(ConfigKeys.COOKIE_NAME_USER)); // user cookie String remoteUser = null; if (cookieNameUser != null) { remoteUser = cookieNameUser.getValue(); // jforum username } if (remoteUser == null && userSession.getUserId() != SystemGlobals .getIntValue(ConfigKeys.ANONYMOUS_USER_ID)) { // user has since logged out return false; } else if (remoteUser != null && userSession.getUserId() == SystemGlobals .getIntValue(ConfigKeys.ANONYMOUS_USER_ID)) { // anonymous user has logged in return false; } else if (remoteUser != null && !remoteUser.equals(userSession.getUsername())) { // not the same user (cookie and session) return false; } return true; // myapp user and forum user the same. valid user. } } (2)修改SystemGlobals.properties中的配置: 修改
|