Spring Security架构与实战全解析

Spring security

1.安全架构

1. 认证

who are you

登陆系统:用户系统

2. 授权

权限管理:用户授权

3. 攻击防护

  • xss (cross-site scripting)
  • csrf (cross-site request forgery)
  • cors (cross-origin resource sharing)
  • sql注入

4. 扩展:权限管理模型

a. RBAC(role based access controll)
  • 用户(t_user)
  • 用户角色关联表
  • 角色(t.role)
  • 角色权限关联表
  • 权限 (t_permission)
b. ACL
  • 直接用户和权限挂钩
    用户(t.user)
    权限(t_permission)

2.Spring security 原理

1.过滤器链架构

2.FilterChainProxy

3.SecurityFilterChain

3.使用

导入依赖

复制代码
<!-- Spring Security依赖 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  <scope>provided </scope>
</dependency>

配置类

复制代码
@Configuration
public class AppSercuityConfig {

    @Bean
    SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http.authorizeHttpRequests(registry ->{
            registry.requestMatchers("/").permitAll()   //允许所有人访问主页
                    .anyRequest().authenticated();              //剩下的所有请求都需要认证
        });

        //启用表单登陆
        http.formLogin(FormLogin -> {
          FormLogin.loginPage("/login").permitAll();
        });

        return http.build();
    }
}

yaml配置文件中配置默认用户名和密码

复制代码
spring:
  security:
    user:
      name: user
      password: 123
      roles: admin,common,hr

不配置默认用户名:user

密码每次都是随机由控制台打印

自定义用户信息查询规则

开启方法级别的精确权限控制

配置类中 @EnableMethodSecurity

控制类中

相关推荐
后端AI实验室2 小时前
用AI写代码,我差点把漏洞发上线:血泪总结的10个教训
java·ai
CoovallyAIHub3 小时前
实时视觉AI智能体框架来了!Vision Agents 狂揽7K Star,延迟低至30ms,YOLO+Gemini实时联动!
算法·架构·github
RoyLin3 小时前
领域驱动设计:回归本质的工程实践
架构
程序员清风4 小时前
小红书二面:Spring Boot的单例模式是如何实现的?
java·后端·面试
belhomme4 小时前
(面试题)Redis实现 IP 维度滑动窗口限流实践
java·面试
CoovallyAIHub4 小时前
OpenClaw:从“19万星标”到“行业封杀”,这只“赛博龙虾”究竟触动了谁的神经?
算法·架构·github
Be_Better4 小时前
学会与虚拟机对话---ASM
java
悟空聊架构4 小时前
基于KaiwuDB在游乐场“刷卡+投币”双模消费系统中的落地实践
数据库·后端·架构
开源之眼6 小时前
《github star 加星 Taimili.com 艾米莉 》为什么Java里面,Service 层不直接返回 Result 对象?
java·后端·github