开源论坛jforum的集成
Jforum是一款开源的java类的论坛,小巧高效,运用了很多JSP新技术,支持hsqldb、oracle、mysql、 postgresql数据库,完全遵从MVC设计模式。
1.首先下载最新的版本(更多信息请参考项目主页: www.jforum.net)
2.创建数据库,它支持多种数据库,可以根据自己需求选定。
3.将jforum.war复制到tomcat目录下,启动tomcat。
4.打开浏览器,进入http://127.0.0.1:8080/jforum/install.jsp
进行自动安装,按照提示进行填写。
5.完成安装后先不进入论坛。修改一些配置文件以支持中文。(虽然上面安装过程也设置,主要针对中文乱码问题)
(1)打开jforum/WEB-INF/config/SystemGlobals.properties
将default.container.encoding = ISO-8859-1,修改为:
default.container.encoding = UTF-8
(2)打开jforum/WEB-INF/config/jforum-custom.conf
定位到database.connection.string一项,在末尾追加
&useUnicode\=true&characterEncoding\=utf8
6.重新启动tomcat,进入http://127.0.0.1:8080/jforum/forums/list.page
以admin身份登录,可以到后台设置论坛了。
7.论坛与自己已有项目的集成(根据自己需要,我这里是自己已有项目已有用户管理,不想多次登录,这里使用jforum提供的SSO技术)
(1)修改.jforum源码,实现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.
}
}
将编译后的.class文件存放在jforum\WEB-INF\classes\net\jforum\sso下
(2)修改SystemGlobals.properties中的配置:
修改SystemGlobals.properties文件中的一下属性的内容:
authentication.type = sso
sso.implementation = net.jforum.sso.CookieUserSSO
sso.redirect = http://www.123.com/login.jsp //可根据实际的登录页面地址进行修改
cookie.name.user = 123UserInfo //自己项目中保存的cookie名称,可根据实际情况修改
(3)修改web应用中的登录和注销部分的逻辑:
登录部分加入以下代码:
...
Cookie cookie = new Cookie("springTourUserInfo", sname);
cookie.setMaxAge(-1);
cookie.setPath("/");//cookie只在同一应用服务器有效
response.addCookie(cookie);
...
注销部分加入以下代码:
......
Cookie cookie = new Cookie("springTourUserInfo", "");
cookie.setMaxAge(0); // delete the cookie.
cookie.setPath("/");
response.addCookie(cookie);
......
(4)在自己项目中增加论坛的链接:
<a href="/forum">论坛</a>
这样就ok了就可以使用了
相关知识,一并附上
实现SSO的技术主要有:
(1)基于cookies实现,需要注意如下几点:如果是基于两个域名之间传递sessionid的方法可能
在windows中成立,在unix&linux中可能会出现问题;可以基于数据库实现;在安全性方面可能会
作更多的考虑。另外,关于跨域问题,虽然cookies本身不跨域,但可以利用它实现跨域的SSO。
(2)Broker-based(基于经纪人),例如Kerberos等;
这种技术的特点就是,有一个集中的认证和用户帐号管理的服务器。经纪人给被用于进一步请求
的电子的身份存取。中央数据库的使用减少了管理的代价,并为认证提供一个公共和独立的"第三方"。
例如Kerberos,Sesame,IBM KryptoKnight(凭证库思想)等。Kerberos是由麻省理工大学发明的安全
认证服务,当前版本V5,已经被UNIX和Windows作为默认的安全认证服务集成进操作系统。
(3)Agent-based(基于代理人)
在这种解决方案中,有一个自动地为不同的应用程序认证用户身份的代理程序。这个代理程序
需要设计有不同的功能。比如, 它可以使用口令表或加密密钥来自动地将认证的负担从用户移开。
代理人被放在服务器上面,在服务器的认证系统和客户端认证方法之间充当一个"翻译"。例如SSH等。
(4)Token-based,例如SecurID,WebID,
现在被广泛使用的口令认证,比如FTP,邮件服务器的登录认证,这是一种简单易用的方式,实现一个口令
在多种应用当中使用。
(5)基于网关
Agent and Broker-based,这里不作介绍。
(6)基于安全断言标记语言(SAML)实现,SAML(Security Assertion Markup Language,安全断言标记语言)
的出现大大简化了SSO,并被OASIS批准为SSO的执行标准。开源组织OpenSAML 实现了 SAML 规范,
可参考http://www.opensaml.org/
CAS由耶鲁大学开发的单点登录系统(SSO,single sign-on),应用广泛,具有独立于平台的,易于理解,
支持代理功能。
开源论坛jforum的集成的更多相关文章
- Jmeter(二十六) - 从入门到精通 - 搭建开源论坛JForum(详解教程)
1.简介 今天这篇文章主要是给大家讲解一下,如何部署测试环境,这里宏哥部署一个开源测论坛,后边的文章中会用到这个论坛,并且也看到童鞋们在群里讨论如何在开发将测试包发给你以后,你如何快速地部署测试环境. ...
- [BBS]搭建开源论坛之JForum安装使用札记
本文作者:sushengmiyan 本文地址:http://blog.csdn.net/sushengmiyan/article/details/47761303 目录 目录 BBS搭建开源论坛之JF ...
- NodeBB – 基于 Node.js 的开源论坛系统
NodeBB 是一个更好的论坛平台,专门为现代网络打造.它是免费的,易于使用. NodeBB 论坛软件是基于 Node.js 开发,支持 Redis 或 MongoDB 的数据库.它利用 Web So ...
- .Net开源项目之开源论坛
.Net开源项目非常多,但是开源并且直接就能用的BBS项目就很少了,至少最近我在这上面没有找到一个合适的开源论坛.可能是因为我要求比较特殊,不但要开箱即用,还要用MVC+MySql开发. Discuz ...
- ASP.NET Core 开源论坛项目 NETCoreBBS
ASP.NET Core 轻量化开源论坛项目,ASP.NET Core Light forum NETCoreBBS 采用 ASP.NET Core + EF Core Sqlite + Bootst ...
- 想要搭建个论坛?Guide哥调研了100来个 Java 开源论坛系统,发现这 5 个最好用!
大家好!我是 Guide 哥,Java 后端开发.一个会一点前端,喜欢烹饪的自由少年. 最近有点小忙.但是,由于前几天答应了一位读者自己会推荐一些开源的论坛系统,所以,昨晚就简单地熬了个夜,对比了很多 ...
- 开源论坛MvcForum推荐
MvcForum算是Asp.net中开源论坛佼佼者之一.主要使用ASP.NET MVC 5 &Unity & Entity Framework 6,有较强的可撸性.是论坛开发者的不二之 ...
- LR实战之Discuz开源论坛——网页细分图结果分析(Web Page Diagnostics)
续LR实战之Discuz开源论坛项目,之前一直是创建虚拟用户脚本(Virtual User Generator)和场景(Controller),现在,终于到了LoadRunner性能测试结果分析(An ...
- LR实战之Discuz开源论坛——安装及简介
想了很久,也许是因为这段时间特别闲,从毕业到现在,我的测试职业生涯也近两年了,发现自己越来越喜欢测试领域,也越来越偏向测试开发了,作为一名专业的测试人员,不得不要学习性能测试,而使用LoadRunne ...
随机推荐
- iot 表索引dump《2》
iot表测试: 在create table语句后面使用organization index,就指定数据表创建结构是IOT.但是在不指定主键Primary Key的情况下,是不允许建表的. create ...
- 我是如何同时拿到阿里和腾讯offer的
前言 三月真是一个忙碌的季节,刚刚开学就需要准备各种面试和笔试(鄙视).幸运的是,在长达一个月的面试内推季之后,终于同时拿到了阿里和腾讯的offer,还是挺开心的.突而想起久未更新的博客,就冒昧学一学 ...
- kgdb接收一个数据包详解
0 kdb>kgdb // 可进入kgdb 模式 if (dbg_kdb_mode) { error = kdb_stub(ks); } else ...
- cpu性能探究 :cache line 原理
參考: 一个解说Direct Mapped Cache很深入浅出的文章: http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Memory/dir ...
- 让工程师爱上CMMI,实现管理于无形 --- 中标软件CMMI L5之路 (1/2)
操作系统市场被微软等国外的IT厂商垄断的大环境下,中标软件作为市场夹缝中发展起来的民族企业,致力于成为中国操作系统旗舰企业.系列核心产品已经在政府.金融.教育.财税.公安.审计.交通.医疗.制造等行业 ...
- 应用程序初始化正常(0xc015002)失败解决方法
VS2005 sidebyside manifest error Microsoft.VC80.MFC Microsoft.VC80.CRT Microsoft.VC80.MFCLOC msvcr80 ...
- 请慎用java的File#renameTo(File)方法(转)
以前我一直以为File#renameTo(File)方法与OS下面的 move/mv 命令是相同的,可以达到改名.移动文件的目的.不过后来经常发现问题:File#renameTo(File)方法会返回 ...
- 14.4.3.6 Fine-tuning InnoDB Buffer Pool Flushing 微调 InnoDB Buffer Pool 刷新:
14.4.3.6 Fine-tuning InnoDB Buffer Pool Flushing 微调 InnoDB Buffer Pool 刷新: innodb_flush_neighbors an ...
- js中substring或split方法取得URL中的域名
1.split方式 <html> <head></head> <body onload="convertTemp()"> <s ...
- OpenRisc-32-ORPSoC烧写外部spi flash
引言 经过前面的分析和介绍,我们对ORPSoC的启动过程(http://blog.csdn.net/rill_zhen/article/details/8855743)和 ORpSoC的debug子系 ...