關(guān)于JForum論壇的基本情況就不在此介紹了,官方網(wǎng)址:www.jforum.net.jforum論壇系統(tǒng)的安裝也很簡(jiǎn)單,按照官方文檔,或者google一下,基本都可以搞定,在此就不在介紹了。大概描述一下我使用jforum的情況:
1.應(yīng)用服務(wù)器:weblogic8.1
2.數(shù)據(jù)庫(kù):oracle10g
3.已有一個(gè)電子商務(wù)網(wǎng)站,需要和jforum進(jìn)行簡(jiǎn)單的集成,提供sso(單點(diǎn)登錄的功能)。
4.說(shuō)明:已有的電子商務(wù)網(wǎng)站域名:http://www.123.com jforum域名:www.123.com/forum,電子商務(wù)網(wǎng)站和jfroum在統(tǒng)一臺(tái)服務(wù)器和同一應(yīng)用服務(wù)器下,如果分開(kāi)可能會(huì)存在session或cookie訪問(wèn)的問(wèn)題。
5.JForum版本:2.1.8
下面簡(jiǎn)要的介紹一下使用cookie進(jìn)行jforum和電子商務(wù)網(wǎng)站的sso集成的過(guò)程:
(1)實(shí)現(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ù)實(shí)際的登錄頁(yè)面地址進(jìn)行修改
cookie.name.user = 123UserInfo //電子商務(wù)網(wǎng)站中保存的cookie名稱(chēng),可根據(jù)實(shí)際情況修改
(3)修改web應(yīng)用中的登錄和注銷(xiāo)部分的邏輯:
登錄部分加入以下代碼:
...
Cookie cookie = new Cookie("springTourUserInfo", sname);
cookie.setMaxAge(-1);
cookie.setPath("/");//cookie只在同一應(yīng)用服務(wù)器有效
response.addCookie(cookie);
...
注銷(xiāo)部分加入以下代碼:
......
Cookie cookie = new Cookie("springTourUserInfo", "");
cookie.setMaxAge(0); // delete the cookie.
cookie.setPath("/");
response.addCookie(cookie);
......
(4)在電子商務(wù)網(wǎng)站增加論壇的鏈接:
<a href="/forum">論壇</a>
基本配置完整,測(cè)試通過(guò),如有問(wèn)題,歡迎交流!
感謝網(wǎng)友提供的資料:
http://www.lifevv.com/java/doc/20080305224358885.html?page=0
http://www.99inf.net/SoftwareDev/Java/54230.htm(作者:王保政)
FeedBack:
# re: JForum 的 SSO集成的問(wèn)題解決
2008-09-24 11:43 | wn
請(qǐng)問(wèn)我按照上面說(shuō)的配置以后,在得到cookie的時(shí)候得不到,
Cookie cookieNameUser = ControllerUtils.getCookie(SystemGlobals
.getValue(ConfigKeys.COOKIE_NAME_USER));
cookieNameUser始終是null,
cookie.setPath("/");不起作用,
所以登錄的時(shí)候一直是游客的身份,如何解決呢,謝謝! 回復(fù) 更多評(píng)論
Cookie cookieNameUser = ControllerUtils.getCookie(SystemGlobals
.getValue(ConfigKeys.COOKIE_NAME_USER));
cookieNameUser始終是null,
cookie.setPath("/");不起作用,
所以登錄的時(shí)候一直是游客的身份,如何解決呢,謝謝! 回復(fù) 更多評(píng)論
# re: JForum 的 SSO集成的問(wèn)題解決
2008-11-22 17:17 | 雪地孤鴻
上面這樣的解決方式是有個(gè)前提條件的,就是你的forum必須和你的主web應(yīng)用是在同一域名下,例如:主web應(yīng)用為:www.ggyy.com,你的forum的訪問(wèn)路徑應(yīng)該為www.ggyy.com/forum這樣的,cookie才能正確的被訪問(wèn)到,這個(gè)也是由于瀏覽的安全因素導(dǎo)致,如果跨域訪問(wèn)cookie,一般情況下是不會(huì)被允許的。 回復(fù) 更多評(píng)論
只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。 | ||
![]() |
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問(wèn)
管理
|
||
相關(guān)文章:
|
||
| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
26 | 27 | 28 | 29 | 30 | 31 | 1 | |||
2 | 3 | 4 | 5 | 6 | 7 | 8 | |||
9 | 10 | 11 | 12 | 13 | 14 | 15 | |||
16 | 17 | 18 | 19 | 20 | 21 | 22 | |||
23 | 24 | 25 | 26 | 27 | 28 | 29 | |||
30 | 1 | 2 | 3 | 4 | 5 | 6 |
常用鏈接
留言簿(17)
隨筆分類(lèi)
- appfuse(1)
- CRM&ERP(1)
- Grails(3)
- java(11)
- ofbiz學(xué)習(xí)(1)
- seam2.0學(xué)習(xí)筆記(1)
- SPRING
- sso(3)
- STRUTS(1)
- Sync4j(1)
- SyncML(2)
- 大戰(zhàn)SOA & MULE
- 工作日志(2)
- 開(kāi)發(fā)工具(3)
- 生活感悟(1)
- 系統(tǒng)維護(hù)(3)
隨筆檔案
- 2011年2月 (2)
- 2011年1月 (3)
- 2010年12月 (1)
- 2010年5月 (1)
- 2010年3月 (1)
- 2009年12月 (1)
- 2009年9月 (1)
- 2009年8月 (1)
- 2009年7月 (1)
- 2009年5月 (1)
- 2009年4月 (1)
- 2009年2月 (1)
- 2008年7月 (1)
- 2008年6月 (1)
- 2008年3月 (3)
- 2007年12月 (1)
- 2007年8月 (1)
- 2007年7月 (1)
- 2006年12月 (1)
- 2006年11月 (1)
- 2006年10月 (1)
- 2006年9月 (1)
- 2006年7月 (1)
- 2006年4月 (2)
- 2005年12月 (1)
- 2005年11月 (1)
- 2005年10月 (4)
- 2005年9月 (1)
文章檔案
blog
搜索
最新評(píng)論

- 1.?re: cas配置全攻略
- 可以下載你的源碼么?尤其是person-directory-api-1.5.1.jar的源碼
- --xxr
- 2.?re: cas配置全攻略[未登錄](méi)
- lz的代碼為什么沒(méi)有用排版插件,看的不清楚啊
- --Jason
- 3.?re: 找不到C.TLD的問(wèn)題
- 33
- --ui
- 4.?re: cas server 3.4.5 部署在weblogic問(wèn)題記錄[未登錄](méi)
- 評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
- --大雄
- 5.?re: cas配置全攻略
- 同樣遇到 Map是空的,沒(méi)有附加屬性
- --fanfree