Spring Security 6.x

Spring创建 SpringBoot 项目,默认 SpringBoot 已经为我们添加了Srping Security的依赖及其对应的版本。

我们只需要在pom文件总引入相应的启动器(spring-boot-starter-security)即可。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
</dependencies>

在添加了Spring Security启动器后,我们的项目就已经受到了Spring Security的管控,当我们去访问项目中定义的接口时,默认会跳转到Spring Security提供的登陆页面进行登陆授权。在我们登陆成功后,才有权限访问这些api

默认情况下,Spring Security提供了一个默认的用户,用户名为user,密码会在控制台输出:

Drawing
控制台输出的密码

我们也可以在application.yml中去自定义用户和密码。

spring:
  security:
    user:
      name: admin
      password: 123

Spring Security中的认证、授权等功能都是基于过滤器完成的。Spring Security为我们提供了30多个过滤器,默认情况下 SpringBoot 在对Spring Security进入自动化配置时,会创建一个SpringSecurityFilterChain的过滤器,并注入到 Spring 容器,这个过滤器将负责所有的安全管理,包括用户认证,授权,重定向到登陆页面等。

Drawing
默认加载的过滤器

通过对源代码的断点调试后,我们会发现Spring Security默认加载了16个过滤器。

一个请求过来Spring Security会按照下图的步骤处理:

Drawing
Spring Security 处理请求步骤
Drawing
自动配置分析

通过Spring Security的源代码我们可以看到,它默认是对所有的请求开启了认证,并启用了Form表单和Basic登陆。当然这些我们都是能过通过Spring Security提供的配置进行自定义的。

最后更新于

这有帮助吗?