jforum与web项目的整合(通过Cookie实现SSO)
编辑 关键字: jforum
jforum与web项目的整合(通过Cookie实现SSO)
jforum是一个不错的开源BBS论坛,支持中文,操作方便,容易扩展,是一个不错的选择。通过参考网上的资料,下面给出了jforum与web项目整合的方法:
1、实现SSO类:
package net.jforum.sso;
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());
public String authenticateUser(RequestContext request) {
// myapp login cookie, contain logged username
Cookie myCookie = ControllerUtils.getCookie("jforumSSOCookieNameUser");
String username = null;
if (myCookie != null) username = myCookie.getValue();
System.out.println("cookie_name1="+myCookie.getName());
System.out.println("cookie value1="+myCookie.getValue());
if (myCookie == null || username.trim().equals("")) {
//JForumExecutionContext.setRedirect(SystemGlobals.getValue(ConfigKeys.SSO_REDIRECT));
return null; // no cookie found
}
System.out.println("cookie_name2="+myCookie.getName());
System.out.println("cookie value2="+myCookie.getValue());
return username; // jforum username
}
public boolean isSessionValid(UserSession userSession, RequestContext request) {
System.out.println("执行isSessionValid方法");
Cookie SSOCookie = ControllerUtils.getCookie("jforumSSOCookieNameUser"); // myapp login cookie
String remoteUser = null;
if (SSOCookie != null) remoteUser = SSOCookie.getValue(); // jforum username
// user has since logged out
if(remoteUser == null &&
userSession.getUserId() != SystemGlobals.getIntValue(ConfigKeys.ANONYMOUS_USER_ID)) {
return false;
// user has since logged in
} else if(remoteUser != null &&
userSession.getUserId() == SystemGlobals.getIntValue(ConfigKeys.ANONYMOUS_USER_ID)) {
return false;
// user has changed user
} else if(remoteUser != null && !remoteUser.equals(userSession.getUsername())) {
return false;
}
return true; // myapp user and forum user the same
}
}
把该类放在jforum\WEB-INF\classes下,然后用javac -d . CookieUserSSO .java 命令编译,.class文件存放在jforum\WEB-INF\classes\net\jforum\sso 下。
2、修改SystemGlobals.properties
有些JForum版本为jforum-custom.conf文件。
查找“SSO”字样,找到“SSO / User authentication”配置部分,将其修改为以下内容:
authentication.type = sso-----------特别注意:sso用小写,不能用大写
##...
sso.implementation = net.jforum.sso.CookieUserSSO----------你自己实现的SSO类
##...
sso.redirect=http://localhost:port/jforum---------------例如:sso.redirect=http://localhost:8082/jforum
3、在程序的登录或注销部分加入如下代码:
登录:
Cookie cookie = new Cookie("jforumSSOCookieNameUser",name);-------name为从登录界面取得的用户名,把它加入到cookie里面
cookie.setPath("/");
cookie.setMaxAge(-1);//设置cookie的生命周期为:会话级,即浏览器关闭,该cookie就消失了
response.addCookie(cookie);
注销:
Cookie cookie = null;
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
Cookie c = cookies[i];
if (c.getName().equals("jforumSSOCookieNameUser")) {
cookie = c;
}
}
}
cookie.setPath("/");
cookie.setMaxAge(0); // delete the cookie.
response.addCookie(cookie);
4、在html/jsp页面加入超链接:
<a href="/jforum">转到论坛</a>
这就配置完成了。
说明:经过以上的过程后,把论坛与 WEB 应用集成了,如果说在 WEB 中有某个会员,而在论坛里没有此会员,则在会员第一次进入论坛时,会在论坛里自动的注册一个新会员,它的名字与 WEB 应用中的会员名字相同。
经过以上的配制,还会存在些问题:
第一,会员进入论坛后无法修改自己信息,他的初始密码,总是错误的,因为这些会员都是自动注册的。要怎么样在自动注册时给个初始密码呢? ------- 修改 SystemGlobals.properties ,
sso.default.password = e10adc3949ba59abbe56e057f20f883e ,主意, jforum 里会员的密码是有经过加密的,其中“e10adc3949ba59abbe56e057f20f883e ”表示“ 123456 ”
第二,经过以前修改后,“游客”是无法访问论坛的,如果说想让“游客”也可以访问论坛,则修改 CookieUserSSO 类:
把 if (myCookie != null) username = myCookie.getValue();
修改成
if (myCookie != null ){
username = myCookie.getValue();
} else {
myCookie = new Cookie( "jforumSSOCookieNameUser" , "Anonymous" );
myCookie.setPath( "/" );
myCookie.setMaxAge(-1); // 设置 cookie 的生命周期为:会话级,即浏览器关闭,该 cookie 就消失了
username = "Anonymous" ;
}
把 if (SSOCookie != null) remoteUser = SSOCookie.getValue(); // jforum username
修改成
if (SSOCookie != null ){
remoteUser = SSOCookie.getValue(); // jforum username
} else {
SSOCookie = new Cookie( "jforumSSOCookieNameUser" , "Anonymous" );
SSOCookie.setPath( "/" );
SSOCookie.setMaxAge(-1); // 设置 cookie 的生命周期为:会话级,即浏览器关闭,该 cookie 就消失了
remoteUser = "Anonymous" ;
}
说明:“ Anonymous ”是一个默认的“游客”会员,存放于数据库中了
分享到:
相关推荐
### jforum论坛整合知识点 #### 一、jforum概述及整合背景 jforum是一款开源的论坛...通过以上步骤,可以有效地将产品管理系统与jforum论坛进行整合,实现单点登录等功能,提高用户体验的同时,也方便了管理操作。
hhhhh安卓开发教程大全
avem-labs_Avem_1740990015.zip
微信群机器人管理系统源码 微信群机器人管理系统源码 支持同登陆多个微信 源码类型: C/S 开发环境: VS2010 SQL2008R2 菜单功能 1、支持同时登录多个微信 2、支持机器人聊天(笑话,成语接龙、故事会、智力等等) 3、支持签到 4、可自定义回复 5、可自定义红包语 6、支持定期发送公告(如群规,广告)等 1、WeChatRobots后台配置web版 2、数据库在WeiChartGroup.Net/app_data中,附加即可
https://upload.csdn.net/creation/uploadResources?spm=1003.2018.3001.4314
名字微控制器_STM32_课程_DeepBlue_1740989720.zip
S7-200Smart恒压供水程序示例与485通讯实践:操作指南与案例解析,S7-200 Smart可编程控制器恒压供水程序设计与实现,附带485通讯范例,S7-200Smart 恒压供水程序样例+485通讯样例 ,S7-200Smart; 恒压供水程序样例; 485通讯样例,S7-200Smart程序样例:恒压供水及485通讯应用示例
Java使用JNA、JNI两种不同方式调用DLL、SO动态库方式读写M1卡源码,支持读写M1卡扇区数据、修改IC卡扇区密钥、改写UID卡卡号等功能,支持Windows系统,同时支持龙芯Mips、LoongArch、海思麒麟鲲鹏飞腾Arm、海光兆芯x86_Amd64等架构平台的国产统信、麒麟等Linux系统,内有jna-4.5.0.jar包,vx13822155058 qq954486673
UDP协议接收和发送数据示例JAVA
本文介绍了范德堡大学深脑刺激器(DBS)项目,该项目旨在开发和临床评估一个系统,以辅助从规划到编程的整个过程。DBS是一种高频刺激治疗,用于治疗运动障碍,如帕金森病。由于目标区域在现有成像技术中可见性差,因此DBS电极的植入和编程过程复杂且耗时。项目涉及使用计算机辅助手术技术,以及一个定制的微定位平台(StarFix),该平台允许在术前进行图像采集和目标规划,提高了手术的精确性和效率。此外,文章还讨论了系统架构和各个模块的功能,以及如何通过中央数据库和网络接口实现信息共享。
图像识别”项目源码资源(Python和C++)
虚拟同步电机与并电网模型的Simulink仿真参数配置与直接使用指南,虚拟同步电机与并电网模型的Simulink仿真:参数齐全,直接使用,同步电机simulink仿真 并电网模型仿真 参数设置好了,可直接使用 ,虚拟同步电机; simulink仿真; 并电网模型仿真; 参数设置; 使用,虚拟同步电机Simulink仿真与并电网模型参数化应用
三菱FX3U与力士乐VFC-x610变频器通讯案例详解:PLC控制下的变频器操作与设置程序,含接线方式及昆仑通态触摸屏操作指南,三菱FX3U与力士乐VFC-x610变频器通讯案例详解:接线、设置与程序注解,实现频率设定、启停控制与实时数据读取功能。,三菱FX3U与力士乐VFC-x610变频器通讯程序三菱FX3U与力士乐VFC-x610变频器通讯案例程序,有注释。 并附送程序,有接线方式,设置。 器件:三菱FX3U的PLC,力士乐VFCx610变频器,昆仑通态,威纶通触摸屏。 功能:实现频率设定,启停控制,实际频率读取等。 ,三菱FX3U;力士乐VFC-x610变频器;通讯程序;案例程序;注释;接线方式;设置;频率设定;启停控制;实际频率读取;昆仑通态;威纶通触摸屏。,三菱FX3U与力士乐VFC-x610变频器通讯程序及案例:频率控制与读取实践
xmselect测试用例~~~~~~~~~~~~~~
总共包含 32 款 AAA 级科幻武器。四种武器类型,每种有 8 种不同的纹理变化! 所有内容均采用 PBR 材质,可直接用于开发游戏!
python词云生成器,将txt文本自动分割生成词云图
智慧园区,作为现代城市发展的新形态,旨在通过高度集成的信息化系统,实现园区的智能化管理与服务。该方案提出,利用智能手环、定制APP、园区管理系统及物联网技术,将园区的各类设施与设备紧密相连,形成一个高效、便捷、安全的智能网络。从智慧社区到智慧酒店,从智慧景区到智慧康养,再到智慧生态,五大应用板块覆盖了园区的每一个角落,为居民、游客及工作人员提供了全方位、个性化的服务体验。例如,智能手环不仅能实现定位、支付、求助等功能,还能监测用户健康状况,让科技真正服务于生活。而智慧景区的建设,更是通过大数据分析、智能票务、电子围栏等先进技术,提升了游客的游玩体验,确保了景区的安全有序。 尤为值得一提的是,方案中的智慧康养服务,展现了科技对人文关怀的深刻体现。通过智慧手环与传感器,自动感知老人身体状态,及时通知家属或医疗机构,有效解决了“空巢老人”的照护难题。同时,智慧生态管理系统的应用,实现了对大气、水、植被等环境要素的实时监测与智能调控,为园区的绿色发展提供了有力保障。此外,方案还提出了建立全域旅游营销平台,整合区域旅游资源,推动旅游业与其他产业的深度融合,为区域经济的转型升级注入了新的活力。 总而言之,这份智慧园区建设方案以其前瞻性的理念、创新性的技术和人性化的服务设计,为我们展示了一个充满智慧与活力的未来园区图景。它不仅提升了园区的运营效率和服务质量,更让科技真正融入了人们的生活,带来了前所未有的便捷与舒适。对于正在规划或实施智慧园区建设的决策者而言,这份方案无疑提供了一份宝贵的参考与启示,激发了他们对于未来智慧生活的无限遐想与憧憬。
使用 SignalR 在 .NET Core 8 最小 API 中构建实时通知,构建实时应用程序已成为现代 Web 开发中必不可少的部分,尤其是对于通知、聊天系统和实时更新等功能。SignalR 是 ASP.NET 的一个强大库,可实现服务器端代码和客户端 Web 应用程序之间的无缝实时通信。 参考文章:https://blog.csdn.net/hefeng_aspnet/article/details/145990801
自适应网址导航网站发布页单页网页模板html源码,超级好看自适应清新网址导航网站发布页单页网页模板html源码!无论电脑还是手机,这是一个网页单页源码!! 模板无后台模板,无需数据库,上传服务器直接能用。