SpringSecurity的入门例子已经上传至GitHub 地址:https://github.com/ylw-github/Spring-Security-Demo.git
Spring Security 简介Spring Security 是一个能够为基于 Spring
的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在 Spring
应用上下文中配置的Bean
,充分利用了Spring IoC
,DI
(控制反转 Inversion of Control ,DI:Dependency Injection
依赖注入)和 AOP(
面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。
创建工程 spring-security-demo 的Maven工程
1. pom.xml 内容:
4.0.0
com.pinyougou
pyg-security-demo
0.0.1-SNAPSHOT
war
4.2.4.RELEASE
org.springframework
spring-core
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-test
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework.security
spring-security-web
4.1.0.RELEASE
org.springframework.security
spring-security-config
4.1.0.RELEASE
javax.servlet
servlet-api
2.5
provided
2.创建web.xml
login.html
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
forceEncoding
true
CharacterEncodingFilter
/*
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring/*.xml
1
springmvc
/
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
3.创建 spring 配置文件 springmvc.xml
4.创建 spring 配置文件 spring-security.xml
5.创建 index.html
此案例我们没有登录页,而是使用了系统自动生成的登陆页,效果如下: 构建登录页:
品优购登录页面
用户名:
密 码:
6.构建登陆失败页 login_error.html,并添加 favicon.ico 到根目录(内容略)
7.修改 spring 配置文件 spring-security.xml
security=“none” 设置此资源不被拦截. login-page:指定登录页面。 authentication-failure-url:指定了身份验证失败时跳转到的页面。 default-target-url:指定了成功进行身份验证和授权后默认呈现给用户的页面。
csrf disabled=“true” 关闭 csrf ,如果不加会出现错误
CSRF(Cross-site request forgery)
跨站请求伪造,也被称为“One Click Attack”
或者 Session Riding
,通常缩写为CSRF
或者 XSRF
,是一种对网站的恶意利用。
如果你没有设置登录页 security=“none” ,将会出现以下错误. always-use-default-target: 指定了是否在身份验证通过后总是跳转到 default-target-url 属性指 定的 URL。