三步即可启用spring security:加依赖、配规则、写用户加载逻辑;自动配置省去过滤器注册,核心是定义访问控制与用户查询,支持内存/数据库认证及角色权限控制。

直接加依赖、配规则、写用户加载逻辑,三步就能跑起来。Spring Boot 对 Spring Security 做了大量自动配置,不需要手动注册过滤器或管理安全上下文,核心工作落在定义“谁可以访问什么”和“怎么查用户”。
引入 starter 依赖
在 pom.xml 中添加基础依赖即可触发自动配置:
-
spring-boot-starter-security:提供认证授权主能力 -
spring-boot-starter-web:支撑 Web 请求拦截 - 如需数据库查用户,再加
spring-boot-starter-jdbc或mybatis-spring-boot-starter
只要引入 spring-boot-starter-security,项目启动后所有接口默认受保护,访问会自动跳转到 /login 页面,内置一个临时用户 user,密码在控制台日志中打印(格式为 UUID 字符串)。
配置放行路径与登录规则
新建 @Configuration 类,用 @EnableWebSecurity 启用安全配置,声明 SecurityFilterChain Bean:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 调用
http.authorizeHttpRequests()设置资源访问规则 - 用
.requestMatchers("/public/**").permitAll()放行静态资源或开放接口 - 用
.anyRequest().authenticated()要求其余请求必须登录 - 通过
.formLogin()开启表单登录,可自定义loginPage("/login")和loginProcessingUrl("/login") - 搭配
.logout().permitAll()启用登出功能
注意:Spring Security 6+ 已弃用 WebSecurityConfigurerAdapter,全部改用函数式配置方式。
实现用户加载与密码校验
系统默认只认内存用户,生产环境需对接数据库:
- 编写实现类实现
UserDetailsService接口,重写loadUserByUsername方法,从数据库查出用户信息(含用户名、加密密码、角色列表) - 返回对象必须是
UserDetails实现类(如User),不能直接返回实体类 - 必须配置
PasswordEncoderBean(推荐BCryptPasswordEncoder),用于比对密码是否匹配 - 若使用角色权限模型,确保查出的
GrantedAuthority列表包含ROLE_ADMIN这类前缀格式的字符串
方法级或接口级权限控制
在需要精细化控制的地方启用注解支持:
- 在配置类上加
@EnableMethodSecurity(Spring Security 6.0+) - 在 Controller 方法上用
@PreAuthorize("hasRole('ADMIN')")或@PreAuthorize("hasAuthority('sys:user:add')") - 也可在 URL 级用
requestMatchers("/admin/**").hasRole("ADMIN")实现粗粒度拦截
权限字符串建议统一规范,比如角色用 ROLE_XXX,操作权限用 模块:资源:动作 格式(如 sys:user:list)。










