在 Spring Security 默认配置中,Spring Security 会为我们提供一个默认用户 “user”,以及在项目启动时会为这个用户生成一串 UUID 字符串密码。但是在实际的项目中,都是在我们的数据库中获取用户信息来进行登陆的。所以在 Spring Security 配置数据库数据源是非常重要的配置。
那接下来就看一看在 Spring Security 中如何连接数据库,使用数据库数据登陆吧!
本文配套的示例源码: https://github.com/lxiaocode/spring-security-examples
在我的博客阅读本文会有更好的阅读体验哦!博客: www.lxiaocode.com
本系列的其他文章,推荐按顺序阅读:
你将会学到什么
- Spring Security 默认的用户配置,默认用户从哪里来?到哪里去?
- Spring Security 是如何获取用户信息进行身份验证的?
- Spring Security 中用户信息的表示方式是什么?
- 如何自定义用户信息数据源,接入数据库数据?
- Spring Security 的密码加密是什么?
1. Spring Security 的默认用户配置
1.1 创建 Spring Security 项目
首先需要创建一个 Spring Security 的项目。你可以使用 Spring Initializr 进行创建,也可以使用 Maven 进行创建。因为以后可能还会继续写关于 Spring Security 相关的示例,所以本文配套的源码是使用 Maven 创建的一个多模块项目,以后的示例都会放到这个项目中。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!-- 本文使用 MyBatis-Plus 连接数据库 -->
<!-- 使用什么的方法都可以,只要从数据库查询到数据就行 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.0</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
编写一个用于测试的接口:
@SpringBootApplication
@MapperScan("com.lxiaocode.security.mapper")
@RestController
@RequestMapping("/")
public class DatabaseApplication {
public static void main(String[] args) {
SpringApplication.run(DatabaseApplication.class);
}
@GetMapping("")
public String index(){
return "index.html";
}
}
1.2 Spring Security 默认用户配置
在我的上一篇文章对 Spring Security 默认配置的介绍中,有一部分是关于 Spring Security 默认用户配置的:
1.2 Spring Security 默认配置
- …
- 使用用户名和随机生成的密码创建一个
UserDetailsService
bean,并记录到控制台。1.2.1 默认配置实现的功能
- …
- 让用户使用
user
用户名和密码通过基于表单的身份验证(再前面的示例中,密码为8e557245-73e2-4286-969a-ff57fe326336
)。
但是当时只是一笔带过,接下来就开始进一步的研究 Spring Security 是如何为我们提供这个默认用户的。
1.2.1 基于内存的用户信息管理
UserDetailsServiceAutoConfiguration:
因为在默认 Spring Security 配置用户并没连接数据库,所以 Spring Security 默认配置就采取了将用户信息保存在内存中的策略。Spring Security 有关默认用户的配置就在 UserDetailsServiceAutoConfiguration
中:
public class UserDetailsServiceAutoConfiguration {
private static final String NOOP_PASSWORD_PREFIX =