一、原理分析1.1加密原理
首先前端页面发送注册的账户信息到controller层,然后依次经过service层和dao层,最后入库。其中对密码的加密应该放在service层进行,加密后再入库。
spring security中有一个加密类BCryptPasswordEncoder可以用来对密码进行加密,调用其中的encode方法返回一个加密后的字符串
public String encode(CharSequence rawPassword) {
String salt;
if (strength > 0) {
if (random != null) {
salt = BCrypt.gensalt(strength, random);
}
else {
salt = BCrypt.gensalt(strength);
}
}
else {
salt = BCrypt.gensalt();
}
return BCrypt.hashpw(rawPassword.toString(), salt);
}
使用时可以在spring的配置文件中配置一个加密类的bean,这样在service中可以直接注入
加密后数据库中存储的是加密过后的字符串。
1.2加密后的登录过程
对密码进行加密后数据库中存储的是加密字符串,用户发起登录请求后,框架会使用相同的加密算法对前端传递的密码进行加密并得到加密字符串,然后和数据库中查询到的字符串进行对比。
二、代码实现
具体的工程代码可以参考我的工程示例,下文中只给出了和添加用户相关的

本文介绍了如何使用Spring Security中的BCryptPasswordEncoder对用户名密码进行加密。在注册时,密码在service层加密后再存入数据库。登录时,框架会用相同算法加密前端传递的密码与数据库中的进行比对。文章提供了配置加密类、实现用户添加、测试加密登录的步骤,并提醒配置后未加密的旧账户将无法登录。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



