一.目的: 在多个运行的系统中,只登录一次,就能运用各种系统,而不需再次登录,也就是开发一个网页通行证.
二.目标: 1.实现跨域,也就是不能用COOKIE来实现,2.好的安全性,也就是不能用JAVASCRIPT来实现自动登录.3.通用性,也就不能依赖于各种JSP服务程序,所以不能用RESIN的共享SSSION的方法实现,也不能用和其它JSP服务程序有关的方法实现.
三.思路:1.程序构架用STRUTS+SPRING+HIBERNATE实现.2.用hessian分布式技术实现登录信息的远程传输.3.用STRUTS的MVC优点,为要认证的程序制作两个认证模块,一个是本机认证,一个是远程认证,通过STRUTS-CONFIG.XML配置修改实现两种认证模式的转换.
四.实现方法: 把所有的认证SESSION认证信息集中在认证中心,其它程序需要认证时,通过分布式技术传输认证中心的SESSION信息.
五.部份代码:
1.远程认证接口:
代码
package remote.passCenter.service;
import java.util.*;
import common.spring.dao.*;
import remote.passCenter.pojo.*;
import remote.passCenter.web.SessionBean;
/**
* <p>Title: 分布式,远程调用</p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2004</p>
*
* <p>Company: </p>
*
* @author 段洪杰
* @version 1.0
*/
public interface IFacadeRemoteService {
/**
* 检查是否已登录
* @param sid String
* @return boolean
* @throws FacadeRemoteServiceException
*/
public boolean check(String sid) throws
FacadeRemoteServiceException;
/**
* 录入新的Session.
* 当原来有同名registerName时,删掉原来的Session,用新的代替.
* 返回ID,当返回的ID为NULL是,存SESSION失败!
* @param session Session
* @return String
*/
public String setSession(Session session) throws FacadeRemoteServiceException;
/**
* 从清除session.
* @param sid String
* @throws FacadeRemoteServiceException
*/
public void removeSession(String sid) throws FacadeRemoteServiceException ;
/**
* 刷新session中的时间为当前时间
* @param sid String
* @throws FacadeRemoteServiceException
*/
public void flushTime(String sid) throws FacadeRemoteServiceException ;
/**
* 将hour个小时以前登录入的session清除
* @param hour int
* @throws FacadeRemoteServiceException
*/
public void flushSession() throws FacadeRemoteServiceException;
/////
public void setBaseDAO(IBaseDAO baseDAO);
public IBaseDAO getBaseDAO();
}
远程接口配置
代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<!--
- Dispatcher servlet for HTTP remoting via Hessian, Burlap, and Spring's
- HTTP invoker (see remoting-servlet.xml for the controllers).
-->
<beans>
<bean name="/FacadeRemoteService" class="org.springframework.remoting.caucho.HessianServiceExporter">
<property name="service"><ref bean="facadeRemoteService"/></property>
<property name="serviceInterface"><value>remote.passCenter.service.IFacadeRemoteService</value></property>
</bean>
</beans>
网络认证中心开发心得!
2007-06-27 10:04 来源: biggo.cublog.cn 作者:biggo 网友评论 0 条 浏览次数 35
上一篇:
下一篇:
