关于jforum的二次开发的心得

最近系统,论坛选择了jforum,因为是集成到自己的系统,所以登录成了难点。不过jforum提供了自己SSO类来实现单点登录,但是问题来了,jforum有两种登录方式,一种是直接在论坛注册,登录,一种在自己的新闻系统注册登录然后转到论坛,可是jforum同时只能支持一种!!
也就说你想在论坛直接注册登录就不能使用SSO,如果想使用SSO,就没法直接在论坛直接登录了!! 但是我想既能在论坛登录,也能在自己的应用系统登录后跳转,所以就改了一部分源码,实现了上述的想法,和大家分享下:

对jforum源代码修改过的地方如下:

1.对搜索中文出现乱码的修改:
修改SystemGlobals.properties文件的default.container.encoding的属性值为utf-8



2.对连接数据库时用户名和密码读取的修改:
在net.jforum.C3P0PooledConnection.init方法里添加
this.ds.setPassword(SystemGlobals.getValue(ConfigKeys.DATABASE_CONNECTION_PASSWORD));
this.ds.setUser(SystemGlobals.getValue(ConfigKeys.DATABASE_CONNECTION_USERNAME));

3.添加SSO的支持
#增加类:net.forum.CookieUserSSO
#修改SystemGlobals.properties文件中关于SSO的属性,具体参考该文件
#修改/templates/default/header.htm: 修改因为使用SSO而造成的对注销,登入,注册等选项的屏蔽

去掉这三个选项外的<#if !sso>选择条件

#对SSO后注销功能的修改:
在net.jorum.view.forum.UserAction.logout()添加对cookie的删除:
Cookie cookieNameUser = ControllerUtils.getCookie(SystemGlobals .getValue(ConfigKeys.COOKIE_NAME_USER));
if(cookieNameUser != null) {
cookieNameUser.setMaxAge(0);
cookieNameUser.setPath("/");
this.response.addCookie(cookieNameUser);
}

#对SSO后注册被关闭的修改:
在net.jforum.view.forum.insert(boolean hasErrors)中,注释掉对是否SSO的判断
/*|| ConfigKeys.TYPE_SSO.equals(SystemGlobals.getValue(ConfigKeys.AUTHENTICATION_TYPE)*/
在net.jforum.view.forum.insertSave( )中,注释掉对是否SSO的判断
/*|| ConfigKeys.TYPE_SSO.equals(SystemGlobals.getValue(ConfigKeys.AUTHENTICATION_TYPE)*/

#对SSO后登入被关闭的修改:
在net.jforum.view.forum.login( )中,注释掉对是否SSO的判断
// if (ConfigKeys.TYPE_SSO.equals(SystemGlobals.getValue(ConfigKeys.AUTHENTICATION_TYPE))) {
// this.registrationDisabled();
// return;
// }
在net.jforum.ControllerUtils.refleshSession( )中,注释掉对是否SSO的判断

// If SSO, then check if the session is valid
// if (!sso.isSessionValid(userSession, request)) {
// SessionFacade.remove(userSession.getSessionId());
// refreshSession();
// }
// }

#对SSO后创建的密码进行MDS加密:
在net.jforum.sso.SSOUtils.register()中添加加密语句:
user.setPassword(MD5.crypt(password.trim()));

#对SSO后台管理员直接添加为论坛的超版:
在net.jforum.sso.SSOUtils.register()中添加用户和组关系语句:
int userId = this.dao.addNew(user);
//2为超版的ID号
this.dao.addToGroup(userId, new int[]{2});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值