關(guān)于JForum論壇的基本情況就不在此介紹了,官方網(wǎng)址:www.jforum.net.jforum論壇系統(tǒng)的安裝也很簡單,按照官方文檔,或者google一下,基本都可以搞定,在此就不在介紹了。大概描述一下我使用jforum的情況:
1.應用服務(wù)器:weblogic8.1
2.數(shù)據(jù)庫:oracle10g
3.已有一個電子商務(wù)網(wǎng)站,需要和jforum進行簡單的集成,提供sso(單點登錄的功能)。
4.說明:已有的電子商務(wù)網(wǎng)站域名:http://www.123.com jforum域名:www.123.com/forum,電子商務(wù)網(wǎng)站和jfroum在統(tǒng)一臺服務(wù)器和同一應用服務(wù)器下,如果分開可能會存在session或cookie訪問的問題。
5.JForum版本:2.1.8
下面簡要的介紹一下使用cookie進行jforum和電子商務(wù)網(wǎng)站的sso集成的過程:
(1)實現(xiàn)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中的配置:
修改SystemGlobals.properties文件中的一下屬性的內(nèi)容:
authentication.type = sso
sso.implementation = net.jforum.sso.CookieUserSSO
sso.redirect = http://www.123.com/login.jsp //可根據(jù)實際的登錄頁面地址進行修改
cookie.name.user = 123UserInfo //電子商務(wù)網(wǎng)站中保存的cookie名稱,可根據(jù)實際情況修改
(3)修改web應用中的登錄和注銷部分的邏輯:
登錄部分加入以下代碼:
...
Cookie cookie = new Cookie("springTourUserInfo", sname);
cookie.setMaxAge(-1);
cookie.setPath("/");//cookie只在同一應用服務(wù)器有效
response.addCookie(cookie);
...
注銷部分加入以下代碼:
......
Cookie cookie = new Cookie("springTourUserInfo", "");
cookie.setMaxAge(0); // delete the cookie.
cookie.setPath("/");
response.addCookie(cookie);
......
(4)在電子商務(wù)網(wǎng)站增加論壇的鏈接:
<a href="/forum">論壇</a>
基本配置完整,測試通過,如有問題,歡迎交流!
感謝網(wǎng)友提供的資料:
http://www.lifevv.com/java/doc/20080305224358885.html?page=0
http://www.99inf.net/SoftwareDev/Java/54230.htm(作者:王保政)
posted on 2008-06-26 16:54
雪地孤鴻 閱讀(4035)
評論(3) 編輯 收藏 所屬分類:
java