1 mvnForum数据迁移
1.1 配置数据源
在Tomcat的server.xml中添加如下内容
<Resource
name="PostgresqlDataSource"
auth="Container"
type="javax.sql.DataSource" driverClassname="org.postgresql.Driver"
url="jdbc:postgresql://192.168.0.180:5432/mvnforum?useUnicode=true&characterEnCoding=utf-8&uSEOldUTF8Behavior=true"
username="pgsql" password="javac"
maxActive="5" maxIDle="2"
maxWait="-1"/>
1.2 修改mvnForum配置文件
在将mvnForum的Web项目中WEB-INF/classes目录下的mvnforum.xml文件中关于数据库配置部分删除,即将如下片断删除
<use_datasource>false</use_datasource>
<driver_class_name>com.MysqL.jdbc.Driver</driver_class_name>
<database_url>jdbc:MysqL://localhost/mvnforum?useUnicode=true&characterEnCoding=utf-8&uSEOldUTF8Behavior=true</database_url>
<database_user>root</database_user>
<database_password/>
<max_connection>20</max_connection>
<max_time_to_wait>2000</max_time_to_wait>
<minutes_between_refresh>30</minutes_between_refresh>
添加如下内容
<use_datasource>true</use_datasource>
<datasource_name>java:comp/env/PostgresqlDataSource</datasource_name>
1.3 创建数据库
在下载的mvnforum-1.1-bin目录下,找到sql目录下的mvnForum_postgresql.sql文件。在postgresql数据库执行该文件,创建数据库。
2 建立CAS Server
同CAS学习笔记中建立
3 配置CAS ClIEnt
3.1 将CAS SSL证书导入到mvnForum所在的JDK中
(1)复制CAS服务器上tomcatsso.crt 文件到%JAVA_HOME%/jre/lib/security。
(2)然后用下面命令将证书tomcatsso.crt 文件导入到cacerts文件中。
Cd %JAVA_HOME%/jre/lib/security
keytool -import -alias tomcatsso -file tomcatsso.crt -keystore cacerts -storepass changeit
3.2 插入CAS CLIENT库文件
复制cas-clIEnt-core-
3.3 修改web.xml文件
在web.xml中添加CAS Filter
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-appContext.xml</param-value>
</context-param>
<filter>
<filter-name>CAS Single Sign Out Filter</filter-name>
<filter-class>org.jasig.cas.clIEnt.session.SingleSignOutFilter</filter-class>
</filter>
<filter-mapPing>
<filter-name>CAS Single Sign Out Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapPing>
<Listener>
<Listener-class>org.jasig.cas.clIEnt.session.SingleSignOuthttpSessionListener</Listener-class>
</Listener>
<filter-name>CAS Authentication Filter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetBeanname</param-name>
<param-value>casAuthenticationFilter</param-value>
</init-param>
<filter-name>CAS ValIDation Filter</filter-name>
<param-value>casValIDationFilter</param-value>
</init-param>
<filter-name>CAS httpServletRequestWrapperFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetBeanname</param-name>
<param-value>cashttpServletRequestWrapperFilter</param-value>
<url-pattern>/mvnforum/login</url-pattern>
<Listener-class>org.springframework.web.context.ContextLoaderListener</Listener-class>
</Listener>
3.4 插入spring-appContext.xml文件
在WEB-INF目录下添加spring-appContext.xml文件
<?xml version="1.0" enCoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean ID="casAuthenticationFilter"
>
<property name ="casServerLoginUrl" value="https://www.test.com:443/cas-server/login"/>
<property name ="servername" value="http://192.168.0.116:8080"/>
</bean>
<bean ID="casValIDationFilter"
>
<property name="ticketValIDator">
<ref bean="Cas20ProxyTicketValIDator"/>
</property>
<property name="useSession" value="true"/>
<property name="servername" value="http://192.168.0.116:8080"/>
<property name="redirectAfterValIDation" value="false"/>
<bean ID="Cas20ProxyTicketValIDator"
>
<constructor-arg index="0" value="https://www.test.com:443/cas-server" />
<bean ID="cashttpServletRequestWrapperFilter"
/>
</beans>
3.5 修改mvnForum Java项目中的代码
首先将该Web工程导入到Eclipse中,然后删除原Web项目中/WEB-INF/lib目录下的mvnforum.jar文件并将下载的mvnForum原文件导入到改项目中。
com.mvnforum.auth.OnlineUserFactoryImpl的valIDatePassword函数中(334行左右)
return encodedPassword.equals(DAOFactory.getMemberDAO().getpassword(memberID));
修改为
//return encodedPassword.equals(DAOFactory.getMemberDAO().getpassword(memberID));
return true;
com.mvnforum.user.UserModuleProcessor的process函数中(130行左右)中
onlineUser = onlineUserManager.getonlineUser(genericRequest);
onlineUser.updateNewMessageCount(false);
后面添加一行代码(在随后的try模块之前)
if(onlineUser.getMemberID() == 0 && !requestURI.equals("/login") && !requestURI.equals("/loginprocess"))
throw new AuthenticationException(AuthenticationException.NOT_LOGIN);
3.6 修改mvnForum Web项目中的代码
删除mvnForum Web项目中/WEB-INF/lib目录下的mvnforum.jar文件,并将上述Eclipse中编译生成的类文件复制到/WEB-INF目录中,即将com目录文件夹复制到/WEB-INF/classes目录文件夹下。
在mvnForum的Web项目中/mvnplugin/mvnforum/user目录下,删除login.Jsp,创建自己的login.Jsp文件,内容如下:
<%@ page ContentType="text/HTML;charset=utf-8" %>
<%@ page errorPage="fatalerror.Jsp"%>
<%@ include file="inc_common.Jsp"%>
<%@ include file="inc_DOCTYPE.Jsp"%>
<%@ page import="net.myvIEtnam.mvncore.util.ParamUtil" %>
<%@ page import="net.myvIEtnam.mvncore.util.DateUtil" %>
<%@ page import="net.myvIEtnam.mvncore.filter.disableHTMLTagFilter" %>
<%@ page import="javax.servlet.http.httpServletRequestWrapper "%>
<!DOCTYPE HTML PUBliC "-//W
<HTML>
<body>
<%
String errorMessage = ParamUtil.getAttribute(request,"Reason");
if(errorMessage.length() > 0){
session.invalIDate();
response.sendRedirect("https://www.test.com/cas-server/logout");
}else{
java.util.Map params = request.getParameterMap();
params.put("Membername",request.getRemoteUser());
params.put("password","ISMvKXpXpadDiUoOSoAfww==");
params.put("FromLoginPage","true");
params.put("md5pw",160) none repeat scroll 0% 0%; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"> params.put("url",disableHTMLTagFilter.filter(ParamUtil.getParameter(request,"url")));
httpServletRequestWrapper httpServletRequestWrapper = new httpServletRequestWrapper(request){
public String getmethod(){
return "POST";
}
};
Requestdispatcher dispatcher=getServletContext().getRequestdispatcher("/mvnforum/" + urlResolver.encodeURL(request,response,"loginprocess",URLResolverService.ACTION_URL));
dispatcher.forward(httpServletRequestWrapper,response);
}
%>
</body>
</HTML>
总结以上是内存溢出为你收集整理的mvnForum同CAS整合实现单点登录全部内容,希望文章能够帮你解决mvnForum同CAS整合实现单点登录所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)