一.前言
1.介绍
- 本文主要介绍了在前后端分离的时候,后端如何使用Spring Security对API进行保护
- 随着越来越多项目采用前后端分离,使用Spring Security对API进行保护,授权,拦截就显的更为重要
- Spring Security由一系列Filter组成,提供了很多默认的行为;我们为了使Spring Security契合对API防护的需求,就需要自定义一些
Handler
和进入点来覆盖Spring Security的默认行为 - 在本文项目中登陆,登出,还是业务,都为接口形式,模拟一个基础的前后端分离形式
2.项目例子
- 此文章用到的例子在spring-boot项目中,传送门
- 此篇文章用到项目模块:
spring-boot-security-base
- 还有更多:spring-cloud项目
二.启用Spring Security&引入依赖
- 在pom.xml中引入
security
依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>28.0-jre</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.9</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
- 引入security,web依赖,其中
com.google.guava
和org.apache.commons
是工具包,提供了很多好用的工具封装,可不引入
- 引入security,web依赖,其中
- 在启动类中,引入
EnableWebSecurity
注解,标识使用Spring Security模块@SpringBootApplication @EnableWebSecurity public class SpringBootSecurityBaseApplication { public static void main(String[] args) { SpringApplication.run(SpringBootSecurityBaseApplication.class, args); } }
三.Spring Security 配置
-
我们自定义Spring Security配置
- 首先使用
@Configuration
将自定义类注入到spring的bean管理中 - 继承
WebSecurityConfigurerAdapter
类,用以覆盖原生配置@Configuration public class SecurityJava
- 首先使用