posts - 37,  comments - 53,  trackbacks - 0
          關(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(作者:王保政)


             

          posted on 2008-06-26 16:54 雪地孤鴻 閱讀(4044) 評(píng)論(3)  編輯  收藏 所屬分類(lèi): java

          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)論
            
          # 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)論
            
          # re: JForum 的 SSO集成的問(wèn)題解決
          2010-11-09 13:36 | sail
          解決難題了。。3Q。。  回復(fù)  更多評(píng)論
            
          <2008年11月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          常用鏈接

          留言簿(17)

          隨筆分類(lèi)

          隨筆檔案

          文章檔案

          blog

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 龙井市| 常宁市| 平阳县| 丹巴县| 昌乐县| 佳木斯市| 庆元县| 噶尔县| 察隅县| 正蓝旗| 鸡西市| 长宁县| 南澳县| 宁化县| 望奎县| 新乐市| 临城县| 道真| 青浦区| 措勤县| 永春县| 温宿县| 汨罗市| 辛集市| 柘城县| 佛教| 胶南市| 白银市| 漳浦县| 凭祥市| 民丰县| 柳林县| 防城港市| 嘉峪关市| 永嘉县| 闸北区| 新密市| 钟山县| 威海市| 繁昌县| 潞城市|