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

控制类中

相关推荐
careathers2 分钟前
【数据结构】栈
java·数据结构
邪修king18 分钟前
Re:Linux系统篇(二十六):文件系统(二):Ext 文件系统底层详解:从 inode、块组到软硬链接,结合 Windows 讲透文件管理本质
android·java·linux
步行cgn23 分钟前
Spring 注入 null 和空字符串详解
数据库·spring·oracle
Yyyyyy~26 分钟前
【java】类和对象
java·开发语言
志栋智能34 分钟前
超自动化巡检如何生成“有灵魂”的运维报告?
大数据·运维·人工智能·架构·自动化
重生之小比特1 小时前
【Java SE】抽象类和接口
java·开发语言
Lyyaoo.1 小时前
【设计模型】策略模式
java
Wang's Blog1 小时前
Java框架快速入门: Spring Security+OAuth2之单点登录(SSO)实战
服务器·spring·状态模式
譕痕1 小时前
Idea 集成 智能体开发工具“千问(qwen)”
java·ide·spring·语言模型
用户8181870627461 小时前
第27章 消息丢失/重复消费的全链路排查(生产者→Broker→消费者)
java·后端