关于springsecurity技术栈,逻辑概念的总结

我之前总结过springmvc的技术栈

当时是从三个主要的角度去理解

1.springmvc的逻辑作用是什么

2.springmvc在代码层面如何配置处理

3.springmvc具体提供了哪些机制

这里简单做一下说明

我们知道tomcat,获取到来自http请求包里面的数据以后

就使用springmvc解析http请求包里面的内容

解析成java数据,然后在返回给前端服务器,发送一个http请求包回去

他本质上就是,java和http请求处理的那一层,然后对哪一层的领域的概念,提供机制供开发者使用。

具体配置的话

在pom中引入依赖

在config包下,创建文件夹

springmvc提供了

1.拦截器的机制

2.解析响应http请求包的机制

这边也讲一下springsecurity的机制

这里说一下背景

因为我们不是搞安全的,是搞数据流转的程序员

所以这个主体封装了一个

springsecurity作为安全层面的配置

他其实就是主要解决两件事

1.网站的登录,注册,注销,就是用户有没有权限去看数据

以及如果有权限看数据,在代码中应该如何处理

基本上就是把数据存到jwt里面,

然后解析拿到数据

2.权限配置

使用rbac机制

如何配置工程

就是

1.在pom中引入依赖

2.在config包下,创建一个配置类,继承一个类,然后重写方法

提供的机制:

好的,我会严格保留你的原文,不做任何删改,只在你已有内容的基础上进行拓展。下面是整理后的博客文章,拓展部分以【拓展】标记,方便你识别。


我之前总结过springmvc的技术栈

当时是从三个主要的角度去理解

1.springmvc的逻辑作用是什么

2.springmvc在代码层面如何配置处理

3.springmvc具体提供了哪些机制

这里简单做一下说明

我们知道tomcat,获取到来自http请求包里面的数据以后

就使用springmvc解析http请求包里面的内容

解析成java数据,然后在返回给前端服务器,发送一个http请求包回去

他本质上就是,java和http请求处理的那一层,然后对哪一层的领域的概念,提供机制供开发者使用。

【拓展】

更具体地说,Spring MVC 在 Java Web 体系中扮演的是**"表示层框架"**的角色。它把 HTTP 请求抽象成 Controller 中的方法调用,把请求参数、头信息、Body 内容等映射成 Java 方法的参数,把返回值再映射成 HTTP 响应。这样开发者只需要关心业务逻辑和数据结构,而不必直接操作 HttpServletRequest 和 HttpServletResponse。

具体配置的话

在pom中引入依赖

在config包下,创建文件夹

【拓展】

一个典型的 Spring MVC 配置类会用 @Configuration@EnableWebMvc 标注,并实现 WebMvcConfigurer 接口。比如:

java 复制代码
@Configuration
@EnableWebMvc
@ComponentScan("com.your.controller")
public class WebConfig implements WebMvcConfigurer {
    // 重写配置方法,如视图解析器、拦截器等
}

同时在 Servlet 容器初始化时(例如通过 AbstractAnnotationConfigDispatcherServletInitializer)注册 DispatcherServlet

springmvc提供了

1.拦截器的机制

2.解析响应http请求包的机制

【拓展】

除了你提到的这两个,Spring MVC 还提供了很多实用机制,例如:

  • 参数解析器(HandlerMethodArgumentResolver):自动将请求参数、路径变量、JSON 体等绑定到 Controller 方法的参数上。
  • 返回值处理器(HandlerMethodReturnValueHandler):将方法返回值转换成响应体、视图名或 ModelAndView。
  • 消息转换器(HttpMessageConverter):支持 JSON、XML、表单等多种数据格式与 Java 对象互转。
  • 数据校验(@Valid + BindingResult):结合 JSR-303 注解对入参进行自动校验。
  • 视图解析与内容协商:根据请求的 Accept 头或扩展名返回 JSP、Thymeleaf、JSON 等不同视图。
  • 文件上传解析器(MultipartResolver):处理 multipart/form-data 类型的请求。

这边也讲一下springsecurity的机制

这里说一下背景

因为我们不是搞安全的,是搞数据流转的程序员

所以这个主体封装了一个

springsecurity作为安全层面的配置

他其实就是主要解决两件事

1.网站的登录,注册,注销,就是用户有没有权限去看数据

以及如果有权限看数据,在代码中应该如何处理

基本上就是把数据存到jwt里面,

然后解析拿到数据

2.权限配置

使用rbac机制

如何配置工程

就是

1.在pom中引入依赖

2.在config包下,创建一个配置类,继承一个类,然后重写方法

提供的机制:

【拓展】

Spring Security 在底层提供了一套完整的过滤器链(FilterChainProxy),每个过滤器负责一个安全关注点。核心机制包括:

  • 认证(Authentication) :支持多种认证方式,如表单登录、Basic 认证、OAuth2、JWT 等。你提到的"数据存到 JWT 里"通常结合 JwtAuthenticationFilter 实现,从请求头解析 Token 并创建 Authentication 对象。
  • 授权(Authorization) :基于角色或权限的访问控制。RBAC 模型可以借助 hasRole()hasAuthority() 表达式,以及 @PreAuthorize 注解在方法级别进行控制。
  • 安全上下文(SecurityContextHolder) :线程绑定的 SecurityContext,存储当前用户的 Authentication 对象,方便在业务代码中获取用户信息(如 SecurityContextHolder.getContext().getAuthentication())。
  • 密码编码(PasswordEncoder) :提供 BCryptPasswordEncoder 等对密码进行单向加密,避免明文存储。
  • 会话管理(Session Management):可以控制并发会话、固定会话保护、会话超时等。
  • Remember-Me 机制:通过 Cookie 实现长时间记住登录状态。
  • 异常处理(AccessDeniedHandler & AuthenticationEntryPoint):定制无权限或未认证时的响应(例如返回 JSON 格式的错误信息)。
  • 跨域与 CSRF 防护:默认开启 CSRF 保护(可针对 API 场景关闭),也支持配置 CORS。

你可以在配置类中通过重写 configure(HttpSecurity http) 方法来组合这些机制,例如:

java 复制代码
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable()
            .authorizeRequests()
                .antMatchers("/login", "/register").permitAll()
                .anyRequest().authenticated()
            .and()
            .addFilter(new JwtAuthenticationFilter(authenticationManager()))
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
    }
}

(注意:较新版本的 Spring Security 推荐基于 SecurityFilterChain Bean 的配置方式,但继承 WebSecurityConfigurerAdapter 的思路仍是常见理解方式。)

相关推荐
java1234_小锋2 小时前
Spring Boot 中 Starter 是什么?它的核心规范有哪些?请说明如何自定义一个 Starter。
java·spring boot·后端
至乐活着2 小时前
Redis缓存设计模式深度实战:击穿、穿透、雪崩及一致性终极方案
spring boot·redis·缓存穿透·缓存雪崩·缓存设计
爱码少年2 小时前
Spring Boot 文件上传下载完整指南:从基础到高级实践
java·spring boot
Flittly3 小时前
【AgentScope Java新手村系列】(7)子Agent编排
java·spring boot·笔记·spring·ai
java1234_小锋3 小时前
Spring Boot 的核心注解 @SpringBootApplication 由哪三个注解组成?
java·spring boot·后端
Master_Azur3 小时前
Web后端基础-Spring分层解耦
spring boot·后端·spring
心之伊始4 小时前
Spring AI Structured Output 实战:把大模型返回稳定转成 Java DTO
java·spring boot·大模型·spring ai·structured output
我登哥MVP4 小时前
SpringCloud Alibaba 核心组件解析:分布式事务(Seata)
java·spring boot·分布式·spring·spring cloud·java-ee·intellij-idea
一 乐17 小时前
家政服务管理系统|基于springboot + vue家政服务管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·家政服务管理系统