【SpringBoot】【MySQL】用户密码进行加密


一、引入 Spring Security 依赖

Spring Security 是一款常用的安全框架,可以用于在应用程序中实现身份验证和授权。我们可以通过引入 Spring Security 相关的依赖来使用它提供的密码加密功能。例如,在 pom.xml 文件中添加以下依赖:

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

二、配置密码加密方式

在 Spring Security 中,我们可以使用多种不同的密码加密算法,例如 BCrypt、SHA256、MD5 等等。我们需要在配置文件中选择一个合适的算法,并将其配置到密码编码器中。例如,在 application.properties 或 application.yml 文件中添加以下配置:

# 使用 BCrypt 算法对密码进行加密
spring.security.user.passwordEncoder=bcrypt

三、主动类自主添加相应bean

在XXXapplication文件中添加如下代码:

// 主动类自主添加相应bean
@Bean
public PasswordEncoder passwordEncoder(){
	return new BCryptPasswordEncoder();
}

在这里插入图片描述

四、加密密码

@Service
public class UserService {

    @Resource
    private UserRepository userRepository;

	//加密编码器
    @Resource
    private PasswordEncoder passwordEncoder;

    public void registerUser(User user) {
        // 对用户密码进行加密
        String encryptedPassword = passwordEncoder.encode(user.getPassword());
        user.setPassword(encryptedPassword);

        // 将用户信息保存到数据库中
        userRepository.save(user);
    }
}

PS:登录验证

在应用程序中,通常不应该直接解密密码。相反,我们将用户提供的明文密码与在数据库中存储的加密密码进行比较以验证用户身份。在 Spring Security 中,使用 PasswordEncoder 对象来处理密码加密和比较。当用户注册时,将使用指定的算法对密码进行加密,并将其存储在数据库中。当用户尝试登录时,将使用相同的算法对提供的明文密码进行加密,并将其与数据库中存储的加密密码进行比较。如果这两个密码相等,则表示用户已通过身份验证。

@Service
public class UserService {
    @Resource
    private UserRepository userRepository;

    @Resource
    private PasswordEncoder passwordEncoder;

    public User findByUsername(String username) {
        return userRepository.findByUsername(username);
    }

    public boolean authenticate(String username, String password) {
        User user = findByUsername(username);
        if (user == null) return false;
        // 登录验证
        return passwordEncoder.matches(password, user.getPassword());
    }
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值