本文中的配置文件指的是:jforum\WEB-INF\config\ SystemGlobals.properties文件
1、 项目的部署,首先下载开源项目包,解压后放到tomcat下,
数据库表的建立:找到jforum\WEB-INF\config\database\oracle\oracle_db_struct.sql文件
向表中插入数据:jforum\WEB-INF\config\database\oracle\ oracle_data_dump.sql文件
指定论坛使用的数据库:找到配置文件
修改代码如下:
# Database type to use
database.driver.name = oracle
# Time in seconds to healthcheck all database connections
database.ping.delay = 1521
配置oracle用户名密码:找到jforum\WEB-INF\config\database\oracle\ oracle.properties文件
修改代码如下:
database.driver.name=oracle
database.connection.password=orcl
database.connection.dbname=orcl
database.connection.string_local=jdbc\:oracle\:oci\:${database.connection.username}/${database.connection.password}@${database.connection.dbname}
database.support.autokeys=false
database.connection.host=localhost
database.connection.pool.min=5
database.support.subqueries=true
database.connection.pool.timeout=120
database.connection.port=1521
database.connection.username=orcl
通过以上配置jforum就可以运行了,可可以试试,不过现在是英文的,好现在将它设置为中文,
在配置文件40行修改代码如下:
i18n.board.default = zh_CN
ok了,中文的可以了。
现在熟悉一下jforum吧!
可以用admin\admin登录,前提是你已经加入了数据了!
到这里基本的功能就可以了,下面说一下我在和项目集成时遇到的问题及解决办法
(1) 单点登录问题,因为论坛是和项目集成使用的,所以要实现单点登录,下面说一下cookie方式实现的单点登录:
实现你自己的登陆类(SSO)
你的类必须实现JF的接口: net.forum.sso.SSO .
注意:使用你自定义的接口类后,关于用户注册/用户激活等功能将不再使用了
下面是我的实现类,供参考
package net.jforum.sso;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpSession;
import net.jforum.ControllerUtils;
import net.jforum.context.RequestContext;
import net.jforum.entities.UserSession;
import net.jforum.util.preferences.ConfigKeys;
import net.jforum.util.preferences.SystemGlobals;
import org.apache.log4j.Logger;
public class MyUserSSO implements SSO {
static final Logger logger = Logger
.getLogger(CookieUserSSO.class.getName());
HttpSession session = null;
public String authenticateUser(RequestContext request) {
String username = null;
try {
// 读取cookie
Cookie[] rcookie = request.getCookies();
if (rcookie != null) {
for (int i = 0; i < rcookie.length; i++) {
Cookie myCookie = rcookie[i];
String unameString = SystemGlobals
.getValue(ConfigKeys.COOKIE_NAME_USER);
if (unameString.equals(myCookie.getName())) {
username = myCookie.getValue();
username = URLDecoder.decode(username.trim(), "UTF-8");
} else {
}
}
}
System.out.println(username + "myusersso.java");
} catch (Exception e) {
System.out.println(e.getMessage());
}
// login cookie set by my web LOGIN application
// Cookie cookieNameUser = ControllerUtils.getCookie(SystemGlobals
// .getValue(ConfigKeys.COOKIE_NAME_USER));
//
// System.out.println(cookieNameUser+"<<<<<<<<"+SystemGlobals
// .getValue(ConfigKeys.COOKIE_NAME_USER));
// if (cookieNameUser != null) {
// username = cookieNameUser.getValue();
// }
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 = null;
try {
cookieNameUser = ControllerUtils.getCookie(SystemGlobals
.getValue(ConfigKeys.COOKIE_NAME_USER));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // 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.
}
}
实现了自己的类之后,要设置jforum的登录模式,找到配置文件329行
authentication.type = sso
346行:sso.implementation = net.jforum.sso.MyUserSSO
原理介绍:
当一个用户访问JForum时,JForum便会检查是否配置SSO,如果配置了SSO,JForum便会调用authenticateUser()方法。该方法简单地返回username或null。
- 若返回了一个不为空的username时,JForum将会检查是否匹配JForum数据库的userid。
- 若没有匹配的userid,JForum将动态加以创建
- JForum设置该user为登陆状态
- 若返回了一个null,则设置为“Anonymous”
- 若一个“Anonymous”用户试图访问权限以外的页面,JForum将根据SSO的设置导航到登陆页面,同时传递给一个登陆成功后应该迁移到的地址参数给login页面。
下面是cookie的代码:
request.setCharacterEncoding("UTF-8");
String username=request.getParameter("username");
Cookie cookiebbs = new Cookie("jforumSSOCookieNameUser", "用户名");
cookiebbs.setMaxAge(-1);
response.addCookie(cookiebbs);
response.sendRedirect(request.getContextPath()+"/forums/list.page");
这里cookie的名字是在配置文件中配置的,468行
cookie.name.user =jforumSSOCookieNameUser
好了,就写到这里吧,相信大家看到这里像搜索问题、中文用户名问题应该都能解决了。我就不再写了,网上搜一下应该都能解决了。
希望这对像我一样想使用jforum但又不知道怎么下手的有帮助,欢迎大家指正。
将jforum放进MyEclipse里做项目
很简单,就是按照你的源码那个目录,然后按照目录组织,(webroot部分)将各个文件夹放进webroot里。完全按照jforum里的目录组织就可以了。然后将src文件夹放在工程里覆盖MyEclipse自动生成那种就可以了
分享到:
相关推荐
【JForum SSO原理与配置】 JForum是一款开源的论坛软件,具备强大的功能。在与其他Web应用集成时,为了提供无缝的用户体验,通常需要实现单点登录(SSO,Single Sign On)。SSO允许用户在一个系统登录后,无需再次...
**Jforum:一个开源的Java论坛系统** Jforum是一款基于Java技术的开源论坛软件,它提供了丰富的社区功能,包括主题讨论、用户管理、权限控制、单点登录等。这款论坛系统以其稳定性和可扩展性而受到开发者的青睐。在...
《深入解析jforum3.0所需jar包》 在Java Web开发领域,jForum是一款流行的开源论坛系统,它基于Java语言编写,提供了丰富的社区交流功能。jForum3.0是其一个重要的版本,针对该版本的运行,我们需要一系列的jar包来...
9. **API接口**:提供API接口,允许与其他系统集成,如SSO单点登录和第三方插件。 10. **丰富的插件和模块**:JForum3拥有众多插件和模块,可以扩展论坛功能,如积分系统、投票模块等。 在rafalsteil-jforum3-f4814...
实现了在一个网站实现多一个论坛的功能,在原网站登陆之后再Cookie保存一个值就可以实现单点登陆...我只是再原有网站可以实现单点登录到论坛.如果拿到资源不会用的也可以评论的时候带上QQ我会尽快联系。说出自己的问题
为了成功运行JForum 3.0,我们需要了解和掌握以下几个关键知识点: 1. **Java环境**:首先,确保你已经安装了Java Development Kit (JDK)。JForum是用Java编写的,因此运行它需要Java环境支持。至少需要JDK 1.8或更...
《JForum漏洞利用源代码解析》 JForum是一款流行的开源Java论坛系统,它以其功能丰富、社区友好而受到许多用户的青睐。然而,如同任何复杂的软件系统一样,JForum也存在安全漏洞,这些漏洞可能被恶意用户利用,对...
标题 "jforum与web项目的整合(通过Cookie实现SSO)" 涉及的是将开源的JForum论坛系统与其他Web应用程序进行集成,并利用Cookie技术实现单点登录(Single Sign-On,简称SSO)。SSO允许用户在一个应用系统中登录后,...
**JForum3源代码详解** JForum是一款广受欢迎的开源论坛软件,以其强大的功能、友好的用户界面和清晰的代码结构赢得了全球开发者的青睐。它支持多种语言,包括简体中文,这使得JForum能够满足不同地区用户的交流...
1、附件关系表JFORUM_ATTACH 2 2、附件详细信息表JFORUM_ATTACH_DESC 2 3、附件配置限定关系表JFORUM_ATTACH_QUOTA 2 4、封锁表JFORUM_BANLIST 2 5、标识表JFORUM_BANNER 3 6、书签表JFORUM_BOOKMARKS 3 7、...
Jforum是一款基于Java技术的开源论坛系统,以其高效、安全和可扩展性受到开发者们的青睐。这个压缩包文件包含了关于Jforum的多个重要知识点,包括配置、初始化流程、处理请求的MVC架构、数据库访问实现、文件监控、...
**Jforum 2.19** 是一个基于Java的开源论坛系统,以其高效、稳定和易用性而受到开发者和社区管理员的欢迎。这个版本的Jforum提供了丰富的功能,包括用户管理、论坛分类、主题发布、回复讨论、搜索功能以及各种自定义...
**JForum3 完整项目详解** JForum3 是一个基于Java开发的开源论坛系统,提供了丰富的社区交流功能。这个项目包含的是从版本控制系统Subversion(SVN)中导出的完整源代码,未经任何修改,因此用户可以深入研究其...
JForum是一款流行的Java论坛软件,它提供了一个用户友好的界面,支持多语言,且具有高度可扩展性。CKEditor则是一个先进的在线文本编辑器,广泛用于网站内容管理系统,提供丰富的富文本编辑功能。在JForum中整合...
JForum是一款基于Java开发的开源论坛系统,它以其高效、稳定和易于扩展的特点在开源社区中受到广泛欢迎。对于想要深入了解FreeMarker模板引擎的开发者来说,JForum的源码是一个绝佳的学习资源。本篇文章将深入探讨...
标题"jforum2论坛源码"表明了我们关注的是一个名为jforum2的开源论坛系统的源代码。jforum2是一个基于Java技术的讨论板平台,允许用户进行互动交流,提供社区建设和管理功能。源码通常包含程序的所有原始代码,可供...
《jForum与MS SQLServer整合学习笔记》 jForum是一款基于Java的开源论坛系统,它以其高度可定制性、灵活性和强大的功能深受开发者喜爱。在本文中,我们将深入探讨如何将jForum与Microsoft SQL Server(简称MS SQL...
【JForum论坛创建详解】 JForum是一款知名的开源论坛软件,具备多语言支持,包括简体中文,虽然管理界面并未完全汉化。它以其强大的功能、优雅的界面以及清晰的代码结构,成为二次开发的理想选择。JForum基于BSD...