Spring Security 官方文档学习(2)—— 核心模块及常用示例

在 Spring Security 3.0 开始项目代码被细分为多个独立的 jar,可以更清晰的区分功能以及依赖。

1、核心模块

1.1 Core — spring-security-core.jar

该模块包含核心身份验证和访问控制类和接口、远程支持和基本配置 api。任何使用 Spring Security 的应用程序都需要它。它支持独立应用程序、远程客户端、方法(服务层)安全性和 JDBC 用户配置。它包含以下顶级包:

  • org.springframework.security.core
  • org.springframework.security.access
  • org.springframework.security.authentication
  • org.springframework.security.provisioning

1.2 Web — spring-security-web.jar

这个模块包含过滤器和相关的网络安全基础设施代码。它包含任何与 servlet APl 相关的内容。如果你需要 Spring Security web 身份验证服务和基于 url 的访问控制,你就需要它。主要的程序包是:

  • org.springframework.security.web

还有很多模块,等用到时再分析。

2、Spring Boot 中使用 Spring Security 的最小设置

这里按照官网来了解 Spring Security 的具体使用方式~

2.1 按照官网提供的最小示例开始探索:

最小示例的工程目录:

image.png

可以说是啥都没有。

image.png

也不需要配置 application

POM中只有这四个:

	<dependencies>
		<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>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
复制代码

直接运行,控制台给出了一串字符如下:

Using generated security password: 802bf3cc-cbcc-424d-9967-2f006ee3e135
复制代码

再访问 localhost:8080 会直接跳转到 /login 到一个具有样式的登录页:

image.png

表单中填写如下:

Username:user
Password:802bf3cc-cbcc-424d-9967-2f006ee3e135
复制代码

即可进入 localhost:8080 欢迎页,我们这里没有欢迎页报错 404。输入的密码就是控制台字符串那里。

上面的过程,就是完成了一个基本的用户验证,只不过从配置到密码都是默认配好的~

2.2 Spring Boot 的自动配置:

那么上述默认配置就是 Spring Boot Auto Configuration 完成的喽。

Spring Boot Auto Configuration 做了这些事:

  • springSecurityFilterChain(bean):启用 Spring Security 的默认配置,将 servlet Filter 创建为一个 bean 叫做 springSecurityFilterChain。这个 bean 负责应用程序中的所有安全问题(保护应用程序 url、验证提交的用户名和密码、重定向到登录表单,等等)。
  • UserDetailsService(bean):创建一个 UserDetailsService bean,该 bean 具有用户名 user 和随机生成的登录到控制台的密码。
  • 为每个请求向 Servlet 容器注册一个名为 springSecurityFilterChain 的 bean 的过滤器。
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享