Spring Security 接入数据库中的数据

本文介绍了如何在Spring Security项目中,从数据库而不是默认的内存配置获取用户信息进行身份验证。讲解了Spring Security的默认用户配置,包括UserDetailsServiceAutoConfiguration和SecurityProperties,以及如何自定义UserDetailsService以连接数据库,实现从数据库中获取用户信息进行登录。
摘要由CSDN通过智能技术生成

在 Spring Security 默认配置中,Spring Security 会为我们提供一个默认用户 “user”,以及在项目启动时会为这个用户生成一串 UUID 字符串密码。但是在实际的项目中,都是在我们的数据库中获取用户信息来进行登陆的。所以在 Spring Security 配置数据库数据源是非常重要的配置。

那接下来就看一看在 Spring Security 中如何连接数据库,使用数据库数据登陆吧!

本文配套的示例源码: https://github.com/lxiaocode/spring-security-examples

在我的博客阅读本文会有更好的阅读体验哦!博客: www.lxiaocode.com

本系列的其他文章,推荐按顺序阅读:

  1. Spring Security 使用 JSON 格式登陆

你将会学到什么

  1. Spring Security 默认的用户配置,默认用户从哪里来?到哪里去?
  2. Spring Security 是如何获取用户信息进行身份验证的?
  3. Spring Security 中用户信息的表示方式是什么?
  4. 如何自定义用户信息数据源,接入数据库数据?
  5. 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 =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值