`
bei-jin-520
  • 浏览: 110529 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

整合JFORUM

阅读更多

把jforum-2.1.8版本的论坛系统整合到自己的项目中。主要的步骤有这么几步

1.去http://jforum.net/releases/jforum-2.1.8-src.zip下载jforum源码。这个下下来后需要把它变成一个WEB项目。其实这个很简单自己建个WEB项目然后参考那个WEB的一些文件信息在把jforum做相应修改就可以成功的把它import进myeclipse里。项目结构如图所示

 

WebRoot目录下的结构

 

2.在net.jforum.sso新建一个CookieUserSSO类,这个类作为单点登录的连接类,代码如下,如果是第一次整合完全可以整个COPY去。

import java.io.UnsupportedEncodingException;

import javax.servlet.http.Cookie;

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 CookieUserSSO implements SSO{
    static final Logger logger = Logger.getLogger(CookieUserSSO.class.getName());   
    String userName; 
    String userID; 
    String email; 
    public final String COOKIE_NAME = "jforumUserId";
    public String authenticateUser(RequestContext request) {   
        // login cookie set by my web LOGIN application  
//      Cookie cookieNameUser = ControllerUtils.getCookie(SystemGlobals.getValue(ConfigKeys.COOKIE_NAME_USER));//这种写法会获取null,不解啊  
        Cookie cookieNameUser = ControllerUtils.getCookie("jforumSSOCookieNameUser");
        String username = null;  
 
        if (cookieNameUser != null) {  
        try {
   username =  java.net.URLDecoder.decode(cookieNameUser.getValue(),"utf-8");
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }  
        }  
        System.out.println(cookieNameUser+" ======== "+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.   
 }

}

3.修改WEB-INF/config目录下的SystemGlobals.properties文件找到SSO需要修改这几个地方

#authentication.type = default
authentication.type = sso

#sso.implementation = net.jforum.sso.RemoteUserSSO
sso.implementation = net.jforum.sso.CookieUserSSO

sso.redirect = http://domain:port/webappname/url

好了修改好这几个地方jforum这边的工作基本就算可以了。

4.回到自己的项目中。在登录的方法里加上这些代码

       Cookie cookie = new Cookie("jforumSSOCookieNameUser", username);  
        cookie.setMaxAge(-1);  
        cookie.setPath("/");  
        response.addCookie(cookie);
   

5.给个链接  <a href="/JForum">论坛</a> 。

6.部署项目,启动TOMCAT。搞定。

7.可能在中文用户名的情况下会出现乱码可以参考我写的另一篇博客http://bei-jin-520.iteye.com/admin/blogs/642970

 

分享到:
评论
1 楼 jantochen 2010-09-26  
<#setting number_format = "#"/>
<#setting datetime_format = dateTimeFormat/>
<#assign logged = logged?default(false)/>
<#assign language = language?default("en_US")/>
<#assign hasCodeBlock = hasCodeBlock?default(false)/>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=${encoding}" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<style type="text/css">@import url( ${contextPath}/templates/${templateName}/styles/style.css?${startupTime} );</style>
<style type="text/css">@import url( ${contextPath}/templates/${templateName}/styles/${language}.css?${startupTime} );</style>

<#if hasCodeBlock>
	<style type="text/css">@import url( ${contextPath}/templates/${templateName}/styles/SyntaxHighlighter.css?${startupTime} );</style>
</#if>

<title>${pageTitle?default("JForum")?html}</title>

</head>
<body class="${language}">

<!--
Original theme from phpBB (http://www.phpbb.com) subSilver
Created by subBlue design
http://www.subBlue.com

Modifications by JForum Team
-->

<table width="100%" border="0">
	<tr>
		<td>
			<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tr>
					<td>
						<a href="${homepageLink}"><img src="${contextPath}/templates/${templateName}/images/logo.jpg"  vspace="1" border="0" alt="[Logo]" /></a>
					</td>
					 
					<td width="100%" align="center" valign="middle">
						<span class="boardtitle">${forumTitle?default("JForum")}</span>
						<table cellspacing="0" cellpadding="2" border="0">
							<tr>
								<td valign="top" nowrap="nowrap" align="center">&nbsp;
									<img src="${contextPath}/templates/${templateName}/images/icon_mini_search.gif" alt="[Search]"/>
									<span class="mainmenu"><a id="search" class="mainmenu" href="${JForumContext.encodeURL("/search/filters")}"><b>${I18n.getMessage("ForumBase.search")}</b></a> &nbsp;
									
									<img src="${contextPath}/templates/${templateName}/images/icon_mini_recentTopics.gif" alt="[Recent Topics]" />
									<a id="latest" class="mainmenu" href="${JForumContext.encodeURL("/recentTopics/list")}">${I18n.getMessage("ForumBase.recentTopics")}</a> &nbsp;
									<img src="${contextPath}/templates/${templateName}/images/icon_mini_recentTopics.gif" alt="[Hottest Topics]" />
									<a id="hottest" class="mainmenu" href="${JForumContext.encodeURL("/hottestTopics/list")}">${I18n.getMessage("ForumBase.hottestTopics")}</a> &nbsp;
									<img src="${contextPath}/templates/${templateName}/images/icon_mini_members.gif" alt="[Members]" />&nbsp;
									<a id="latest2" class="mainmenu" href="${JForumContext.encodeURL("/user/list")}">${I18n.getMessage("ForumBase.usersList")}</a> &nbsp;
									<span class="mainmenu"> <img src="${contextPath}/templates/${templateName}/images/icon_mini_groups.gif" alt="[Groups]" />&nbsp;<a id="backtosite" class="mainmenu" href="${homepageLink}">${I18n.getMessage("ForumBase.backToSite")}</a>&nbsp;
									
									<br>

									<#if canAccessModerationLog?default(false)>
										<img src="${contextPath}/templates/${templateName}/images/icon_mini_members.gif" alt="[Moderation Log]" />
										<a id="moderationlog" class="mainmenu" href="${JForumContext.encodeURL("/moderation/showActivityLog")}">${I18n.getMessage("ModerationLog.moderationLog")}</a> &nbsp;
									</#if>

									<#if logged>
										<a id="myprofile" class="mainmenu" href="${JForumContext.encodeURL("/user/edit/${session.userId}")}"><img src="${contextPath}/templates/${templateName}/images/icon_mini_profile.gif" border="0" alt="[Profile]" /> ${I18n.getMessage("ForumBase.profile")}</a>&nbsp; 
										<#if bookmarksEnabled>
											<a class="mainmenu" href="${JForumContext.encodeURL("/bookmarks/list/${session.userId}")}"><img src="${contextPath}/templates/${templateName}/images/icon_minipost.gif" alt="[Post]" />${I18n.getMessage("Bookmarks.myBag")}</a>&nbsp;
										</#if>
										<a id="privatemessages" class="mainmenu" href="${JForumContext.encodeURL("/pm/inbox")}"><img src="${contextPath}/templates/${templateName}/images/icon_mini_message.gif" border="0" alt="[Message]" />
											<#if (session.privateMessages > 0)>
												${I18n.getMessage("ForumBase.newPm")}: (${session.privateMessages})
											<#else>
												${I18n.getMessage("ForumBase.privateMessages")}
											</#if>
										</a>&nbsp;
										</span>

										<#if !sso>
											<a id="logout" class="mainmenu" href="${JForumContext.encodeURL("/user/logout")}"><img src="${contextPath}/templates/${templateName}/images/icon_mini_login.gif" border="0" alt="[Login]" /> ${I18n.getMessage("ForumBase.logout")} [${session.username}] </a></span>
										</#if>
									</#if>
	
									<#if !logged && !sso>
										<a id="register" class="mainmenu" href="${JForumContext.encodeURL("/user/insert")}"><img src="${contextPath}/templates/${templateName}/images/icon_mini_register.gif" border="0" alt="[Register]" /> ${I18n.getMessage("ForumBase.register")}</a>&nbsp;/&nbsp;</span>
										<a id="login" class="mainmenu" href="${JForumContext.encodeURL("/user/login")}"><img src="${contextPath}/templates/${templateName}/images/icon_mini_login.gif" border="0" alt="[Login]" /> ${I18n.getMessage("ForumBase.login")}</a>&nbsp; </span>
									</#if>

									
								</td>
							</tr>
						</table>
					</td>
				</tr>
			</table>
		</td>
	</tr>
	<tr>
		<td>

相关推荐

    jforum+ckeditor整合案例

    在JForum中整合CKEditor,可以替换其默认的编辑器,从而提供更强大的文本格式化和媒体插入能力,提升用户在论坛中的互动体验。 整合JForum和CKEditor的过程主要包括以下几个步骤: 1. **下载和准备** - 首先,你...

    jforum与web项目的整合(通过Cookie实现SSO)

    标题 "jforum与web项目的整合(通过Cookie实现SSO)" 涉及的是将开源的JForum论坛系统与其他Web应用程序进行集成,并利用Cookie技术实现单点登录(Single Sign-On,简称SSO)。SSO允许用户在一个应用系统中登录后,...

    jforum3.0所需要的jar包

    《深入解析jforum3.0所需jar包》 在Java Web开发领域,jForum是一款流行的开源论坛系统,它基于Java语言编写,提供了丰富的社区交流功能。jForum3.0是其一个重要的版本,针对该版本的运行,我们需要一系列的jar包来...

    jforum说明文档 源码解析 单点登录 jforum缓存

    **Jforum:一个开源的Java论坛系统** Jforum是一款基于Java技术的开源论坛软件,它提供了丰富的社区功能,包括主题讨论、用户管理、权限控制、单点登录等。这款论坛系统以其稳定性和可扩展性而受到开发者的青睐。在...

    chx 学习jForum笔记十八 jForum与ms sqlserver

    《jForum与MS SQLServer整合学习笔记》 jForum是一款基于Java的开源论坛系统,它以其高度可定制性、灵活性和强大的功能深受开发者喜爱。在本文中,我们将深入探讨如何将jForum与Microsoft SQL Server(简称MS SQL...

    JForum3 jforum java 开源论坛 论坛

    JForum3是一款基于Java开发的开源论坛系统,其核心设计目标是提供一个高效、稳定且功能丰富的在线讨论平台。这款论坛软件使用了Java语言编写,遵循开放源代码的原则,允许用户自由地使用、修改和分发。JForum3是...

    jforum3源代码

    **JForum3源代码详解** JForum是一款广受欢迎的开源论坛软件,以其强大的功能、友好的用户界面和清晰的代码结构赢得了全球开发者的青睐。它支持多种语言,包括简体中文,这使得JForum能够满足不同地区用户的交流...

    jforum漏洞利用源代码

    《JForum漏洞利用源代码解析》 JForum是一款流行的开源Java论坛系统,它以其功能丰富、社区友好而受到许多用户的青睐。然而,如同任何复杂的软件系统一样,JForum也存在安全漏洞,这些漏洞可能被恶意用户利用,对...

    Jforum相关文档和PPT

    Jforum是一款基于Java技术的开源论坛系统,以其高效、安全和可扩展性受到开发者们的青睐。这个压缩包文件包含了关于Jforum的多个重要知识点,包括配置、初始化流程、处理请求的MVC架构、数据库访问实现、文件监控、...

    JForum_SSO_-_JForum单点登陆原理与配置

    【JForum SSO原理与配置】 JForum是一款开源的论坛软件,具备强大的功能。在与其他Web应用集成时,为了提供无缝的用户体验,通常需要实现单点登录(SSO,Single Sign On)。SSO允许用户在一个系统登录后,无需再次...

    jforum3.0项目需要的jar包

    为了成功运行JForum 3.0,我们需要了解和掌握以下几个关键知识点: 1. **Java环境**:首先,确保你已经安装了Java Development Kit (JDK)。JForum是用Java编写的,因此运行它需要Java环境支持。至少需要JDK 1.8或更...

    Jforum二次开发成果

    《Jforum二次开发详解——构建个性化论坛系统》 Jforum,作为一个开源的Java论坛系统,以其优秀的性能和灵活的可扩展性受到了众多开发者和社区管理员的青睐。在Jforum 2.1.8的基础上进行二次开发,可以进一步满足...

    JForum论坛数据库表结构.rar

    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、...

    JForum3 完整项目

    **JForum3 完整项目详解** JForum3 是一个基于Java开发的开源论坛系统,提供了丰富的社区交流功能。这个项目包含的是从版本控制系统Subversion(SVN)中导出的完整源代码,未经任何修改,因此用户可以深入研究其...

    Jforum2.19

    **Jforum 2.19** 是一个基于Java的开源论坛系统,以其高效、稳定和易用性而受到开发者和社区管理员的欢迎。这个版本的Jforum提供了丰富的功能,包括用户管理、论坛分类、主题发布、回复讨论、搜索功能以及各种自定义...

    jforum 源码

    JForum是一款基于Java开发的开源论坛系统,它以其高效、稳定和易于扩展的特点在开源社区中受到广泛欢迎。对于想要深入了解FreeMarker模板引擎的开发者来说,JForum的源码是一个绝佳的学习资源。本篇文章将深入探讨...

    利用JForum创建论坛

    【JForum论坛创建详解】 JForum是一款知名的开源论坛软件,具备多语言支持,包括简体中文,虽然管理界面并未完全汉化。它以其强大的功能、优雅的界面以及清晰的代码结构,成为二次开发的理想选择。JForum基于BSD...

    jforum2论坛源码

    标题"jforum2论坛源码"表明了我们关注的是一个名为jforum2的开源论坛系统的源代码。jforum2是一个基于Java技术的讨论板平台,允许用户进行互动交流,提供社区建设和管理功能。源码通常包含程序的所有原始代码,可供...

Global site tag (gtag.js) - Google Analytics