1. 简介
Spring Security基于Spring框架提供了一整套(相对)完整的web应用解决方案。Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。认证上包含http表单,http摘要、OpenID和LDAP等,在授权方面有ACL访问控制列表和基于角色的访问控制。
2. Hello World 型的基本简单配置
2.1 Web.xml 添加 spring security 的过滤器
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:/spring-security.xml</param-value> </context-param> <!-- Filter --> <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>
2.2 web.xml 中加入 spring-mvc 的配置用于control
<!-- Spring MVC --> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:/springMVC.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
2.3 spring-security.xml 配置
<http auto-config='true'> <intercept-url pattern="/**" access="ROLE_USER" /> </http
最小的配置,auto-config=true 等于
<http> <form-login /> <http-basic /> <logout /> </http>
intercept-url 即 拦截的url, "/**" 表示所有的全拦截了,access表示role_user的认证用户才能连接
2.4 form-login 配置
<sec:form-login login-page="/portal/login.jsp" authentication-failure-url="/portal/login.jsp?sb"/>
这个已经是对form-login的个性配置了,login-page配置login的连接,取代默认的spring-security-check(记不清了,可以不配置的情况下看下,authentication-failure-url表示认证出错是跳转的url
2.5 intercept-url 配置非认证用户都可以连接
<sec:intercept-url pattern="/portal/login.**" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
2.6 logout配置
<sec:logout logout-url="/logout" logout-success-url="/portal/login.jsp"/>
2.7 Authentication 配置
这边用的固定用户,实际项目可能不这样写,这例子就简便处理,后面再学习换成datasource
<sec:authentication-manager> <sec:authentication-provider> <sec:user-service> <sec:user name="admin" password="admin" authorities="ROLE_USER, ROLE_ADMIN"/> <sec:user name="jack" password="jack" authorities="ROLE_USER" /> </sec:user-service> </sec:authentication-provider> </sec:authentication-manager>
3. 例子说明
到这可以运行例子了,当然如果form-login配置了login-page的话必须自己写个页面来登录,上面index.jsp等都自己随便写。
简单的http表单的认证登录就完成了,后面要做的就是根据实际情况改装,深入。
(持续更新中.....)