Spring Boot集成Spring Security只需三步:加starter依赖自动启用基础保护;配SecurityFilterChain放行静态资源和登录页、启用表单登录;实现UserDetailsService对接数据库校验用户,并配置BCryptPasswordEncoder。

在 Spring Boot 中集成 Spring Security 实现安全认证,核心是三件事:加依赖、配规则、管用户。不需要写大量底层逻辑,Spring Boot 的自动配置会让基础保护立即生效,后续再按需定制。
添加 starter 依赖即可启用基础保护
只需在 pom.xml 中引入:
spring-boot-starter-security-
spring-boot-starter-web(Web 项目必需) - 如用数据库查用户,再加
spring-boot-starter-jdbc或mybatis-spring-boot-starter
依赖加入后,项目启动时 Spring Security 就会自动生效:所有接口默认需要登录,访问任意路径都会重定向到 /login 页面,系统还会在控制台打印一个临时用户名(user)和随机密码——这是内置的默认账号,仅用于快速验证。
配置安全规则,放行静态资源和登录接口
新建配置类(如 SecurityConfig),用 @Configuration + @EnableWebSecurity 标记,并定义 SecurityFilterChain Bean:
- 调用
http.authorizeHttpRequests()设置访问规则 - 用
.requestMatchers("/login", "/css/**", "/js/**", "/images/**").permitAll()放行登录页和静态资源 - 用
.anyRequest().authenticated()要求其余请求必须登录 - 启用表单登录:
.formLogin().loginPage("/login").permitAll()
这样就完成了从“全拦截”到“有选择放行”的过渡,避免首页都打不开的尴尬。
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
对接真实用户,实现数据库登录校验
默认账号不能用于生产。要连数据库,关键两步:
- 实现
UserDetailsService接口,重写loadUserByUsername方法:根据用户名查出用户实体,封装成UserDetails对象返回(含用户名、加密密码、权限列表等) - 配置
PasswordEncoderBean(推荐BCryptPasswordEncoder),确保密码比对时使用相同算法解密
此时登录提交的账号密码,就会走你写的数据库查询逻辑,而不是用默认账号了。注意:数据库中密码字段必须存的是 BCrypt 加密后的密文,不是明文。
补充常见增强点
上线前建议加上这些实用配置:
- 关闭 H2 控制台等开发工具的自动暴露(
security.h2.console.enabled=false) - 禁用 CSRF 保护(如用 JWT 做前后端分离):
.csrf().disable() - 自定义登录成功/失败跳转,或返回 JSON 响应而非页面重定向
- 结合角色(ROLE_ADMIN)或权限(sys:user:list)做细粒度授权,用
@PreAuthorize("hasRole('ADMIN')")或@PreAuthorize("hasAuthority('sys:user:delete')")
不复杂但容易忽略
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










