spring boot集成spring security实现基础安全认证只需三步:加依赖、配过滤规则、管用户凭证;自动配置默认保护所有接口,通过securityfilterchain配置放行路径、表单登录及密码加密,验证后即可支持角色权限等扩展。

Spring Boot 集成 Spring Security 实现基础安全认证,核心就三件事:加依赖、配过滤规则、管用户凭证。不需要写拦截器,也不用自己存 session,Spring Boot 的自动配置会搭好骨架,你只需告诉它“谁可以访问什么”和“怎么验人”。
添加 starter 依赖
在 pom.xml 中引入关键依赖:
- spring-boot-starter-security(必须)
- spring-boot-starter-web(提供 Web 支持)
- 如果用数据库查用户,再加 spring-boot-starter-data-jpa 和对应数据库驱动
加完后启动项目,所有接口默认受保护——未登录访问会跳转到自动生成的登录页(或返回 401),这是 Spring Security 自动生效的表现。
配置放行路径与登录逻辑
新建一个 @Configuration 类,用 SecurityFilterChain Bean 替代老式的继承方式(Spring Boot 3 不再支持 WebSecurityConfigurerAdapter):
- 用
.requestMatchers("/public/**").permitAll()放行免登录资源(如登录页、验证码、静态文件) - 用
.anyRequest().authenticated()表示其余请求必须登录 - 启用表单登录:
.formLogin().loginPage("/login").permitAll(),并指定登录成功跳转页 - 关闭 CSRF(仅限前后端分离项目):
.csrf(AbstractHttpConfigurer::disable)
注意:若用 JWT 或 API 场景,应设 sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
提供用户信息与密码加密
Spring Security 不知道你的用户在哪,需手动对接:
- 实现 UserDetailsService 接口,重写
loadUserByUsername方法,从内存、数据库或远程服务加载用户(含用户名、密码、权限列表) - 注入 PasswordEncoder Bean,推荐使用
BCryptPasswordEncoder,确保密码存储和比对都走哈希 - 若用内存用户快速测试,可直接在配置类中用
userDetailsService(new InMemoryUserDetailsManager(...))
密码明文存库、不加盐、用 MD5 等弱算法,都是典型安全隐患,务必避免。
验证是否生效
跑起来后做两件事确认集成成功:
- 访问一个未放行的接口(如
/api/user),应返回 401 或跳转登录页 - 用默认账号(控制台启动时打印的 username/password)或你配置的账号登录,再访问同一接口,应正常返回数据
此时基础认证已跑通。后续可按需扩展:加角色权限注解(@PreAuthorize("hasRole('ADMIN')")、接入 JWT、对接数据库用户表等。










