
邀请码网站怎么做,wordpress未验证邮箱用户,wordpress 网页路径,qq空间破解版免费下载1. 添加 Spring Security 依赖
如果项目没有 Spring Security:
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-security/artifactId
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-security/artifactId
/dependency2. 创建 PasswordEncoder
Spring Security 提供了:
BCryptPasswordEncoder在config目录中创建PasswordConfig.java
@Configuration
public class PasswordConfig {@Beanpublic PasswordEncoder passwordEncoder(){return new BCryptPasswordEncoder();}
}之后 Spring 会自动管理这个 Bean。3. 注册时加密密码
例如你的用户注册:
@Service
public class UserService {// 注入配置类@Autowiredprivate PasswordEncoder passwordEncoder;@Autowiredprivate UserAuthMapper userAuthMapper;public void register(UserAuth user){// 明文密码String rawPassword = user.getPassword();// 加密String encodePassword =passwordEncoder.encode(rawPassword);// 替换为密文user.setPassword(encodePassword);// 存入数据库userAuthMapper.insert(user);}
}假设用户输入:
123456数据库保存:
$2a$10$8JjKp7VZxq7mXyqz9qzDNe8....而不是:
1234564. 登录时验证密码
不要这样:
if(user.getPassword().equals(inputPassword)){}因为数据库里已经不是明文。
应该:
boolean result =passwordEncoder.matches(inputPassword,user.getPassword());if(result){// 登录成功
}例如:
数据库:
password:$2a$10$8JjKp7VZxq7mXyqz9qzDNe8....用户输入:
123456执行:
passwordEncoder.matches("123456","$2a$10$8JjKp7..."
)返回:
true