spring security从零学起
关于spring security 2.x的使用,网上的讨论日渐多了起来,因为工作的原因,开发一个项目中需要,我也开始了对于它的学习。
一开始只是听说过acegi,甚至读这个词的时候还是一个字母一个字母的读出来,到后来在官网,网友的博客等一系列渠道了解了一些皮毛,关于整个spring security的介绍就不多说了,相信网络上这一方面的资料有很多的,如果有网友有兴趣,我只说一下acegi的读音:ah-see-gi。呵呵
关于一个新的框架,大家是从什么地方入手学的呢?我相信首先会从官方给的Demo里吧,呵呵。我也一样。从官网下载了spring security2.0.5的release版本后,解压出来包括两个文件夹,一个是相应的jar包及其源码,另一个是API。某天看到有个网友在找官方Demo的源码,其实也在解压后的dist文件夹中。
好了,言归正传。开始第一个最简的spring security 的配置,让第一个应用跑起来。
第一步,建立一个WEB工程,并添加了spring的支持。将dist文件夹中的
spring-security-acl-2.0.5.RELEASE.jar
spring-security-core-2.0.5.RELEASE.jar
spring-security-core-tiger-2.0.5.RELEASE.jar
spring-security-taglibs-2.0.5.RELEASE.jar
相信从文件名就可以看出每个JAR的大致功能。第一个ACL以后再讲,第二个为其核心,第三个是对JDK1.5开始的Annotation的支持,第四个为其标签库。
将官方第一个Demo中的applicationContext-security.xml加入自己的工程中,修改其中的部分代码。
<?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.1.xsd"> <http auto-config="true"> <intercept-url pattern="/protect/**" access="ROLE_ADMIN"/> <intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" /> </http> <authentication-provider> <user-service> <user name="march" password="march" authorities="ROLE_ADMIN, ROLE_USER" /> <user name="scott" password="tiger" authorities="ROLE_USER" /> </user-service></authentication-provider></beans:beans>
<context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/applicationContext-security.xml</param-value></context-param> <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><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener> <listener> <listener-class>org.springframework.security.ui.session.HttpSessionEventPublisher</listener-class> </listener>