struts+spring+hibernate 整合spring security 2.X
2012-07-01 01:55
357 查看
好吧!在这个夜深人静的时候,既然没有睡意,那就刚好整理一个我的博文,osc挺好的,以后技术博文就在这里整理了!前几天因为项目需求spring security 机制,所以就自己研究了一下,到官方下载了spring security 3.0的!spring security 是一个非常好的安全管理机制!有兴趣的可以自己下去慢慢研究!至于spring security介绍等等,这里我就不再赘述了,大家自己google各种的资料都有讲的!不过我在学习期间发现大家都是自己整理的博文挺好的,但是都是关于spring security 的单个项目!没有讲过SSH集成spring security!更有可恨的人士竟然把自己的标题命名为SSH集成spring security !然后当我google出来时百度文库的,看着看着就是只讲到了!spring security!没有讲集成!最后一句话看完我才知道是坑爹货!“本文没有讲SSH如何集成spring security,只讲了spring security!因为这样容易被人搜到下载,只为赚取积分!”。这让我想到了,这些误人子弟的前辈们!哎~~~算了不批鸟!我们言归正传!不过也算是我学习经历吧!
这里我分享我自己的学习历程,个人观点,仅供参考!如有错误之处还请指教!如有雷同纯属巧合!好了不扯了!开始!
首先,我当时用ssh集成spring security 3.0的时候总是报一个错误,告诉我版本不能兼容!我搞不明白,不知道哪里不兼容!后来google到一篇老外的文章才发现是,spring 2.5不能和spring security 3.0集成的!当时我乃个蛋疼啊!因为框架是架构师打出来的,只知道让我集成spring security搞了半天他用的是spring 2.5!整死我了!看那个老外讲说是spring 3.0整合spring security 3.0是没问题的!而spring 2.5只能与spring security 2的版本集成!(老外就是好啊!还是要感谢他要不是他我不知道,我那个问题神马时候才能解决!)
其实后来为了验证这一点,我用myeclipse自带的ssh集成了spring security 3结果成功了!(但是当中出现了一个小的bug,就是spring 3+spring security 3,集成我之久数据层的时候它总是报一个nullpointexception ,我测试就dao层不能通过!出于工作紧急,我就没时间再解决了!bug尚未解决!待解决后再发!)那就说明他讲的是对的!然后我下载spring security 2.0.7的和spring 2.5集成!最后测试通过!完全成功!同时hibernate持久数据库也正确无误!
好了现在讲完了!开始贴代码!这里只讲的是SS2H集成spring security2.0.7至于你采用哪种授权方式安全机制就是你自己设置了,为了简单理解建立框架我就简单配置实现!
1.web.xml 配置.
[b]<!--这里必须注意一下,就是spring security 钩子,大家都叫钩子,我也就这么叫了!就是监听拦截你请求的,这个呢必须要放到struts 拦截监听的前面!否则spring security 管理不上的! -->
</welcome-file-list>
</web-app>[/code]
[/b]
2.applicationContext-security.xml 配置!这里你要是实现过spring security的单独项目那就基本没问题了!
这里的头信息需要说明一下,我是从官方文档中copy的!也就是spring security 2.0.7版本的配置!以后的版本
会略微有差别的!
3.以上两点只要配置正确,接下来就是加入jar了下载好你的jar,copy到lib即可!
4.基本结构:
![](http://static.oschina.net/uploads/space/2012/0705/103202_zpYD_570640.jpg)
5.要想深入spring security 推荐大家看官方里面有文档!
总结:其实集成这些框架没什么复杂的东西要将,最关键的就是版本之间的兼容问题,你在搭建框架之前必须熟知那个版本之间能兼容,那个不能!这样搭建不会走很多弯路!其次就是你要配置正确!建议最好到官方找答案!好了,没什么技术含量!希望给后来的一点经验!少走弯路吧!因为我发现网上没有人发表过这样的文章!基本讲的对新手来说还是不容易理解!
这里我分享我自己的学习历程,个人观点,仅供参考!如有错误之处还请指教!如有雷同纯属巧合!好了不扯了!开始!
首先,我当时用ssh集成spring security 3.0的时候总是报一个错误,告诉我版本不能兼容!我搞不明白,不知道哪里不兼容!后来google到一篇老外的文章才发现是,spring 2.5不能和spring security 3.0集成的!当时我乃个蛋疼啊!因为框架是架构师打出来的,只知道让我集成spring security搞了半天他用的是spring 2.5!整死我了!看那个老外讲说是spring 3.0整合spring security 3.0是没问题的!而spring 2.5只能与spring security 2的版本集成!(老外就是好啊!还是要感谢他要不是他我不知道,我那个问题神马时候才能解决!)
其实后来为了验证这一点,我用myeclipse自带的ssh集成了spring security 3结果成功了!(但是当中出现了一个小的bug,就是spring 3+spring security 3,集成我之久数据层的时候它总是报一个nullpointexception ,我测试就dao层不能通过!出于工作紧急,我就没时间再解决了!bug尚未解决!待解决后再发!)那就说明他讲的是对的!然后我下载spring security 2.0.7的和spring 2.5集成!最后测试通过!完全成功!同时hibernate持久数据库也正确无误!
好了现在讲完了!开始贴代码!这里只讲的是SS2H集成spring security2.0.7至于你采用哪种授权方式安全机制就是你自己设置了,为了简单理解建立框架我就简单配置实现!
1.web.xml 配置.
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/applicationContext*.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> <!-- default: /WEB-INF/applicationContext.xml --> </listener> <!-- Character Encoding filter --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>openSessionInView</filter-name> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> <init-param> <param-name>sessionFactoryBeanName</param-name> <param-value>sf</param-value> </init-param> </filter> <filter-mapping> <filter-name>openSessionInView</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
[b]<!--这里必须注意一下,就是spring security 钩子,大家都叫钩子,我也就这么叫了!就是监听拦截你请求的,这个呢必须要放到struts 拦截监听的前面!否则spring security 管理不上的! -->
<filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- Struts2 filter --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> [code=plain]<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>[/code]
[/b]
2.applicationContext-security.xml 配置!这里你要是实现过spring security的单独项目那就基本没问题了!
这里的头信息需要说明一下,我是从官方文档中copy的!也就是spring security 2.0.7版本的配置!以后的版本
会略微有差别的!
<?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:beans="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 http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.4.xsd"> <http auto-config="true"> <!--这是spring 提供的http/https信道安全的这个是重要的!你的请求信道是安全的!--> <!-- <intercept-url pattern="/register.jsp*" access="IS_AUTHENTICATED_ANONYMOUSLY"/> --> <!--释放用户登陆page 允许任何人访问该页面 --> <intercept-url pattern="/login.jsp*" access="IS_AUTHENTICATED_ANONYMOUSLY"/> <!-- 为角色添加角色资源 --> <intercept-url pattern="/user.jsp" access="ROLE_USER"/> <intercept-url pattern="/admin.jsp" access="ROLE_ADMIN"/> <!-- 配置用户正常访问page --> <intercept-url pattern="/**" access="ROLE_USER"/> <!-- 自定义用户登陆page default-target-url登陆成功跳转的page ,authentication-failure-url="/login.jsp?error=true"这里是登陆失败跳转的page--> <form-login login-page="/login.jsp" default-target-url="/index.jsp" authentication-failure-url="/login.jsp?error=true"/> <!-- 记住密码--> <remember-me/> </http> <!--这里需要注意下一spring security3.0 版本中配置是 authentication-manger 里面配置 authentication-provider 而spring security 2.5版本去掉了外围的manger!版本升级功能增强,所以这都是注意的地方!--> <authentication-provider> <user-service> <!-- 配置登陆用户authorities 配置用户的角色权限 --> <user name="dobby" password="dobby" authorities="ROLE_USER,ROLE_ADMIN" /> <user name="xi" password="xi" authorities="ROLE_USER" /> </user-service> </authentication-provider> </beans:beans>
3.以上两点只要配置正确,接下来就是加入jar了下载好你的jar,copy到lib即可!
4.基本结构:
![](http://static.oschina.net/uploads/space/2012/0705/103202_zpYD_570640.jpg)
5.要想深入spring security 推荐大家看官方里面有文档!
总结:其实集成这些框架没什么复杂的东西要将,最关键的就是版本之间的兼容问题,你在搭建框架之前必须熟知那个版本之间能兼容,那个不能!这样搭建不会走很多弯路!其次就是你要配置正确!建议最好到官方找答案!好了,没什么技术含量!希望给后来的一点经验!少走弯路吧!因为我发现网上没有人发表过这样的文章!基本讲的对新手来说还是不容易理解!
相关文章推荐
- 基于Struts 2.x + Spring 2.x + Hibernate 3.x整合开发
- 转:struts+spring+hibernate 整合spring security
- [原]Java web学习系列之 Java web开发中的SSH整合(Struts、Spring、Hibernate)(下)
- Struts+Spring+Hibernate(JPA) + Ajax整合详解(基于最新版本)
- Struts+Spring+Hibernate/SSH整合开发详细一
- struts-2.3.1+spring-framework-3.2.2+hibernate-4.1.1整合历程<第一部分>(详解)
- Struts+Spring+Hibernate,SSH整合实例
- 整合struts+spring+hibernate
- struts2.0与spring2.0的整合 spring和hibernate的整合
- MyEclipse整合SSH(Struts+Spring+Hibernate)简单登录范例(一)
- Struts 2 + Spring 3 + Hibernate 整合笔记
- [原]Java web学习系列之 Java web开发中的SSH整合(Struts、Spring、Hibernate)(上)
- struts2,hibernate,spring整合笔记(4)--struts与spring的整合
- Spring 2.5.6 + Struts 2.1.6 + Hibernate 3.3.1 GA + Jboss 4.2.2 整合
- struts2.1.8 + spring2.5.6 + hibernate3.3.2的整合
- spring学习笔记16--Spring2.x+Hibernate3.x +Struts1.x整合开发(4)-----Hibernate3.x配置二级缓存
- Spring+Hibernate如何配置数据源(Struts Spring Hibernate (SSH) 整合实例)
- Struts+hibernate+Spring的整合方法
- 整合spring,struts,hibernate框架时你都犯了哪些错?
- MyEclipse整合SSH(Struts+Spring+Hibernate)简单登录范例(二)