From 92bea18975a2d2c922d52d96454fba954d162394 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=B6=9B?= Date: Tue, 10 Aug 2021 22:36:18 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=9B=B4=E6=AD=A3Spring=20MVC=E7=9A=84?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/_posts/spring-security-basic.md | 14 +++++++------- source/_posts/spring-security-webmvc.md | 10 +++++----- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/source/_posts/spring-security-basic.md b/source/_posts/spring-security-basic.md index 3645635..c60590a 100644 --- a/source/_posts/spring-security-basic.md +++ b/source/_posts/spring-security-basic.md @@ -17,7 +17,7 @@ Spring Security 是 Spring 框架中的安全框架,整个 Spring Security 在 1. {% post_link spring-security-basic %} 1. {% post_link spring-security-webmvc %} -1. 在Spring WebFlux中的配置Spring Security +1. {% post_link spring-security-webflux %} ## 基础组成 @@ -55,7 +55,7 @@ Spring Security 是 Spring 框架中的安全框架,整个 Spring Security 在 `AuthenticationManager`在Spring Security中定义了如何执行用户身份验证,经过`AuthenticationManager`的执行以后,Spring Security即可以向`SecurityContextHolder`中写入被返回的验证信息。 !!! note "" - `AuthenticationManager`通常会被应用成一个Servlet Filter,而这也是Spring Web MVC基于Servlet的处理流程。 + `AuthenticationManager`通常会被应用成一个Servlet Filter,而这也是Spring MVC基于Servlet的处理流程。 由于`AuthenticationManager`只是一个接口,所以在实际使用时通常都使用`ProviderManager`类来实现其所定义的功能。常用的基于`AuthenticationManager`接口的类结构图如下。 @@ -122,13 +122,13 @@ Spring Security 是 Spring 框架中的安全框架,整个 Spring Security 在 `BearerTokenAuthenticaitonFilter`的主要功能就是解析HTTP请求头中的`Authorization`,并将其中所携带的Token内容解析出来,形成一个`BearerTokenAuthenticationToken`实例,然后放入`AuthenticationManager`中进行认证,最后将认证结果放入`SecurityContextHolder`中。这里出现的`BearerTokenAuthenticationToken`也是一个`AbstractAuthenticationToken`抽象类的子类,其中也包含了认证所需要使用的用户名、认证资料等。 -## Spring Web MVC中的认证流程 +## Spring MVC中的认证流程 -Spring Web MVC中主要是依赖于Servlet Filter组成的管道来对HTTP请求中携带的认证消息进行处理。下面借用一个伪数据流图来简单示意一下在一次Web请求中认证信息的处理过程。 +Spring MVC中主要是依赖于Servlet Filter组成的管道来对HTTP请求中携带的认证消息进行处理。下面借用一个伪数据流图来简单示意一下在一次Web请求中认证信息的处理过程。 -{% oss_image spring-security/spring-security-servlet-flow.svg "Spring Web MVC认证流程示意" %} +{% oss_image spring-security/spring-security-servlet-flow.svg "Spring MVC认证流程示意" %} -从这个图上可以看出来,在Spring Web MVC中,这些实现了`javax.servlet.Filter`的认证过滤器才是才是真正启动认证过程执行的起点。而我们在使用时大多只需要为它们提供它们所依赖的工作实例即可,例如`UserDetailsService`、`PasswordEncoder`等。 +从这个图上可以看出来,在Spring MVC中,这些实现了`javax.servlet.Filter`的认证过滤器才是才是真正启动认证过程执行的起点。而我们在使用时大多只需要为它们提供它们所依赖的工作实例即可,例如`UserDetailsService`、`PasswordEncoder`等。 ## Spring WebFlux中的认证流程 @@ -136,4 +136,4 @@ Spring WebFlux中的依赖的是WebFilter组成的过滤器管道来对HTTP请 {% oss_image spring-security/spring-security-webflux-flow.svg "Spring WebFlux认证流程示意" %} -Spring WebFlux中的认证流程和参与组件要比Spring Web MVC少很多。从上图可以看出来,启动认证过程的起点依旧是实现了`WebFilter`接口的过滤器,但是不同的认证过滤器开始使用不同的`AuthenticationManager`实例。但是整个流程中不变的是,所有已经完成认证的结果还都将保存到`SecurityContext`实例中。 \ No newline at end of file +Spring WebFlux中的认证流程和参与组件要比Spring MVC少很多。从上图可以看出来,启动认证过程的起点依旧是实现了`WebFilter`接口的过滤器,但是不同的认证过滤器开始使用不同的`AuthenticationManager`实例。但是整个流程中不变的是,所有已经完成认证的结果还都将保存到`SecurityContext`实例中。 \ No newline at end of file diff --git a/source/_posts/spring-security-webmvc.md b/source/_posts/spring-security-webmvc.md index fadb261..3bce32a 100644 --- a/source/_posts/spring-security-webmvc.md +++ b/source/_posts/spring-security-webmvc.md @@ -1,10 +1,10 @@ --- -title: 在Spring Web MVC中的配置Spring Security +title: 在Spring MVC中的配置Spring Security tags: - Java - Spring - Spring Security - - Spring Web MVC + - Spring MVC - 安全认证 categories: - - JVM @@ -15,12 +15,12 @@ date: 2021-08-10 09:19:31 其实在Spring应用中使用Spring Security并不困难,最复杂的事情应该就是如何完成Spring Security的配置了。一旦Spring Security的配置成功完成,那么在Controller中就可以直接使用Spring Security提供的注解来使用Spring Security安全认证的结果。 -要完成Spring Web MVC应用中的Spring Security配置,需要至少完成以下两项内容: +要完成Spring MVC应用中的Spring Security配置,需要至少完成以下两项内容: 1. 完成设置HTTP的认证流程。 1. 完成认证所需要使用的类。 -以下将从这两个方向分别说明如何在Spring Web MVC应用中配置Spring Security。 +以下将从这两个方向分别说明如何在Spring MVC应用中配置Spring Security。 本篇关于 Spring Security 的文章主要由三部分组成,分别是: @@ -30,7 +30,7 @@ date: 2021-08-10 09:19:31 ## HttpSecurity -要在一个Spring Web MVC应用中启用Spring Security,除了要在主类或者配置类上添加`@EnableWebSecurity`注解以外,更重要的是建立一个继承了`WebSecurityConfigurerAdapter`抽象类的配置类。这个配置类在我们的代码中最常见的形式就是下面这个样子。 +要在一个Spring MVC应用中启用Spring Security,除了要在主类或者配置类上添加`@EnableWebSecurity`注解以外,更重要的是建立一个继承了`WebSecurityConfigurerAdapter`抽象类的配置类。这个配置类在我们的代码中最常见的形式就是下面这个样子。 ```java @Configuration