通过添加 spring-boot-starter-security
来为你的Spring Boot项目添加Spring Security。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
Spring Security通过一系列过滤器来处理HTTP请求并执行安全措施。每个过滤器负责一个特定的安全任务,如认证、授权、CSRF保护等。以下是这些过滤器的简单说明:
- DisableEncodeUrlFilter:禁用URL编码过滤器,通常用于确保URL不包含会话标识符。
- WebAsyncManagerIntegrationFilter:处理异步请求,确保Spring Security能正确处理异步场景下的安全性。
- SecurityContextPersistenceFilter:负责从存储(如Session)中获取
SecurityContext
,并在请求结束后保存。 - HeaderWriterFilter:用于添加或修改HTTP响应头,比如设置安全相关的响应头。
- CsrfFilter:提供CSRF(跨站请求伪造)保护,防止恶意网站向受信任的网站发送未经授权的请求。
- LogoutFilter:处理用户登出逻辑,清除安全上下文和会话。
- UsernamePasswordAuthenticationFilter:负责处理用户名和密码的身份验证。
- DefaultLoginPageGeneratingFilter:当没有自定义登录页面时,自动生成一个默认的登录页面。
- DefaultLogoutPageGeneratingFilter:当没有自定义登出页面时,自动生成一个默认的登出页面。
- BasicAuthenticationFilter:处理HTTP基本认证请求。
- RequestCacheAwareFilter:处理已缓存的请求,通常用于重定向到之前访问的受保护页面。
- SecurityContextHolderAwareRequestFilter:确保当前请求有权访问
SecurityContext
,通常用于控制器和其他业务逻辑。 - AnonymousAuthenticationFilter:处理匿名用户的身份验证,如果用户未登录,该过滤器会提供一个匿名身份。
- SessionManagementFilter:管理用户的会话,确保会话符合安全策略(如并发会话限制)。
- ExceptionTranslationFilter:处理安全相关的异常,通常用于在遇到权限不足或其他安全问题时进行重定向或错误处理。
- FilterSecurityInterceptor:最后一个过滤器,负责执行访问控制决策,决定请求是否被允许访问资源。
这些过滤器按照顺序执行,确保每个请求经过多层次的安全检查和处理。这是Spring Security的核心工作机制。