SpringSecurity配置文件+注解配置笔记
文章目录
一、什么是SpringSecurity
Spring Security 最早不叫 Spring Security ,叫 Acegi Security,叫 Acegi Security 并不是说它和 Spring 就没有关系了,它依然是为 Spring 框架提供安全支持的。事实上,Java 领域的框架,很少有框架能够脱离 Spring 框架独立存在。Acegi Security 基于 Spring,可以帮助我们为项目建立丰富的角色与权限管理,但是最广为人诟病的则是它臃肿繁琐的配置,这一问题最终也遗传给了 Spring Security。
当 Acegi Security 投入 Spring 怀抱之后,先把这个名字改了,这就是大家所见到的 Spring Security 了,然后配置也得到了极大的简化。
但是和 Shiro 相比,人们对 Spring Security 的评价依然中重量级、配置繁琐。
二、有什么功能
对于一个权限管理框架而言,无论是 Shiro 还是 Spring Security,最最核心的功能,无非就是两方面:
认证
授权
通俗点说,认证就是我们常说的登录,授权就是权限鉴别,看看请求是否具备相应的权限。
Spring Security 支持多种不同的认证方式,这些认证方式有的是 Spring Security 自己提供的认证功能,有的是第三方标准组织制订的,主要有如下一些:
一些比较常见的认证方式:
HTTP BASIC authentication headers:基于IETF RFC 标准。
HTTP Digest authentication headers:基于IETF RFC 标准。
HTTP X.509 client certificate exchange:基于IETF RFC 标准。
LDAP:跨平台身份验证。
Form-based authentication:基于表单的身份验证。
Run-as authentication:用户用户临时以某一个身份登录。
OpenID authentication:去中心化认证。
除了这些常见的认证方式之外,一些比较冷门的认证方式,Spring Security 也提供了支持。
Jasig Central Authentication Service:单点登录。
Automatic “remember-me” authentication:记住我登录(允许一些非敏感操作)。
Anonymous authentication:匿名登录。
三、SpringSecurity的使用
使用默认配置的Security
1、引入依赖
<!--5.4.2-->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>${security.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${security.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${security.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>${security.version}</version>
</dependency>
2、加载过滤器
俩种方式:
web.xml加载过滤器
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<f