您的位置:首页 > 编程语言 > Java开发

Spring Security3 入门二

2011-07-27 12:02 162 查看
上一篇对Spring Security 进行了简单的介绍,就Spring Security 能够为我们做些什么,以及我们为什么用它进行了说明。当然,你也许会想,Spring Security 能做的事是否也有其他类似的框架可以做?是的,不过开源的安全方面的框架我所知道的就两个,一个是Spring Security,另一个是跟Spring Security 相同出生的 Apache Shiro。但相对而言,Spring Security 历史更悠久一些,也有一些网评说Spring Security
比 Shiro 强大的多,Shiro没用过,就不便做评论。有兴趣,大家可以去Apache 下载 Shiro研究研究,有什么心得大家可以多多交流。

Ok,开始今天的主题。 下面我们就说说Spring Security 怎样来集成到我们现有的项目中。说明一下,我们的项目是从1月份开始的,当时官网最新的版本是 Spring Security 3.0.5,以后我们说的默认都是基于这个版本,下载地址
http://static.springsource.org/spring-security/site/downloads.html,刚去看了一下,到今天为止,最新版本为 Spring Security 3.1.0.RC2,但Release
版本仍然是 3.0.5。下载页面有一段话,“Spring Security 3.0.5 is the latest production release. It requires a minimum of Spring 3.0.3 and Java 5.”,是说Spring Security 3.0.5 是最后的release
版本,需要的环境为,Java 5以及 Spring 3.0.3 以上的版本,如果项目中不考虑用Spring 的话,Spring Security 只依赖Spring 的一个jar 包,org.springframework.web-3.0.5.RELEASE.jar(我们的项目中用的是Spring 3.0.5的版本) 。其他的都是Spring Security 自带的jar,导入项目即可,因为大家的需求的不确定性,所以Security 的jar 包暂时大家就全部导入,Security 所有的Jar 900多K,所以不用担心影响工程的大小。下图是security
的所有Jar 图预览



其中,我们项目中用到的jar 包为,1. spring-security-aspects-3.0.5.RELEASE.jar、2. spring-security-cas-client-3.0.5.RELEASE.jar、3. spring-security-config-3.0.5.RELEASE.jar、4. spring-security-core-3.0.5.RELEASE.jar、5. spring-security-taglibs-3.0.5.RELEASE.jar、6. spring-security-web-3.0.5.RELEASE.jar,这也是一个B/S系统需要的最基本的相关文件了。

Spring Security 提供两个保护,一种是Web 应用程序的保护,所有的资源(Css、Js、图片、Jsp页面、Html页面等等),如果需要,你都可以“保护起来”,还有一种是方法的保护。也就是说只要我们愿意,系统中的任何资源,大到一个页面,小到一个图片,都是可以控制其对客户端的可见性,是否觉得Security 很强大?呵呵!

先去吃饭,等会继续。

上班咯!

下面我们继续Spring Security 的详细入门介绍。

上文提到过,Spring security 提供两种方式的保护,一种是对Web 程序资源的保护,另一种是对方法的保护。

Ok,那么我们就先来说说,对Web 资源的保护。Spring Security 通过Servlet 拦截器来拦截所有的客户端请求来实现在到达我们的业务代码之前进行身份认证以及用户授权等,以确保每次进入我们业务代码的请求都是安全的。并且,Spring Security 框架设计的非常灵活,若Security 框架默认的实现不足以满足你的需求,那么你可以很轻松的更换实现,而且这种替换没有任何的代价,只需要在配置文件中配置一下,一切搞定。你肯定想到了Ioc ,没错,在Spring Security
中,随处可见我们已经非常熟悉的Ioc的 身影。看了Spring Security 的源码,你会发现Spring Security 源码中随处都是设计模式的最佳实践。

Spring Security 通过Aop 做到对方法的保护。Spring Security 通过Aop 来代理对象,将“切面”逻辑应用于被代理对象,以确保用户只有在拥有足够的权限时才能够调用相应的方法。

到现在,我们基本上明白了Spring Security 是通过什么方式来保护我们的资源以及方法。要开会了,暂时就到这,有时间继续上来更新。

我们继续!下面我们说与Security 与现有系统的集成,大家肯定已经想到需要在 web.xml 中配置,没错。在web.xml 中加入以下的一个过滤器配置,这样我们的web 应用程序便已经被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>


两点简单罗嗦一下。首先,“ /* ” 意思是拦截客户端的所有请求。org.springframework.web.filter.DelegatingFilterProxy 该类便是我们需要依赖的 Spring 中的org.springframework.web-3.0.5.RELEASE.jar 包中的类。

到现在,Spring Security 便已经跟我们现有的系统完成无缝集成了。此时,来自客户端的所有请求都要经过Spring Security 的过滤器链。Ok,入门二,我们就到这,一点一点来讲,尽量控制每篇的长度,否则太长了,大伙看着也累不是。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: