首先是对账号是否存在进行判定,如果不存在那么就能注册,这里使用BCryptPasswordEncoder对密码进行加密,之后把明文密码替换成加密后的密码。
@Override
//注册功能
public int register(User user) {
UserExample userExample = new UserExample();
UserExample.Criteria criteria = userExample.createCriteria();
criteria.andNumberEqualTo(user.getNumber());
List<User> users = userMapper.selectByExample(userExample);
if (CollectionUtils.isEmpty(users)) {
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
String encode = bCryptPasswordEncoder.encode(user.getPassword());
user.setPassword(encode);
return userMapper.insert(user);
}
return 0;
}
注册之后如果要登录,如何将数据库读出来的密码与用户输入的密码进行比对?这里首先是根据用户名获取到当前用户对象,然后将用户输入的密码和当前用户对象中的password进行比较,使用了BCryptPasswordEncoder的matches()方法进行比较。比对成功,登录成功。比对失败,那就登录失败咯
@Override
public int login(User user) {
UserExample userExample = new UserExample();
UserExample.Criteria criteria = userExample.createCriteria();
criteria.andNumberEqualTo(user.getNumber());
List<User> users = userMapper.selectByExample(userExample);
if (CollectionUtils.isEmpty(users)){
return 0;
}
User user1 = users.get(0);
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
if (encoder.matches(user.getPassword(), user1.getPassword())){
return 1;
}
return 0;
}