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

控制类中

相关推荐
还是奇怪9 分钟前
Simon Willison 用 DSPy 优化 Datasette Agent 提示词:提示工程正在变成可测试的软件工程
java·开发语言·软件工程
XUHUOJUN22 分钟前
Azure Local 2602→2606 演进全景:2604 为什么是架构转折点(2602→2606 演进与升级价值·中篇)
架构·azure local
zfoo-framework24 分钟前
1.ansible安装 2.虚拟机克隆
java
码上解惑33 分钟前
从 Dify 工作流说起:常用节点怎么选、怎样组合?
java·人工智能·ai·agent·dify·智能体·spring ai
恒拓高科WorkPlus1 小时前
BeeWorks Meet私有化视频会议:内网会议、组织架构联动与会议安全
安全·架构
青山木1 小时前
Hot 100 --- 岛屿数量
java·数据结构·算法·leetcode·深度优先·广度优先
程序员-珍2 小时前
报错下载android sdk失败
android·java
adinnet20262 小时前
深度拆解企业级 Agent 架构:LangGraph + 知识图谱 + 向量检索的协同设计
人工智能·架构·知识图谱
糖果店的幽灵2 小时前
langgraph分支之 - 动态分支(Dynamic Branch)
java·前端·javascript·人工智能·langgraph
吃饱了得干活2 小时前
亿级订单表分库分表设计,从0到1全流程
java·数据库·面试