3.定义一个IUserService继承UserDetailsService接口:

在创建一个UserServiceImpl去实现IUserService接口,覆盖loadUserByUsername方法:

@Service("userService")//这个名字必须与spring-security.xml中配置的认证器名字一样
public class UserServiceImpl implements IUserService {
@Autowired
private IUserDao userDao;
@Autowired//当执行保存用户的时候对用户的密码进行加密
private BCryptPasswordEncoder bCryptPasswordEncoder;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
UserInfo userInfo = null;
try {
userInfo = userDao.findByUsername(username);//调用到层根据用户查找用户信息,返回值为UserInfo对象
} catch (Exception e) {
e.printStackTrace();
}
//处理自己的用户对象封装成UserDetails
// User user=new User(userInfo.getUsername(),"{noop}"+userInfo.getPassword(),getAuthority(userInfo.getRoles()));//下面这个三元表达式代表该账户是否激活可用
User user = new User(userInfo.getUsername(), userInfo.getPassword(), userInfo.getStatus() == 0 ? false : true, true, true, true, getAuthority(userInfo.getRoles()));
return user;
}
//作用就是返回一个List集合,集合中装入的是角色描述
public List<SimpleGrantedAuthority> getAuthority(List<Role> roles) {
List<SimpleGrantedAuthority> list = new ArrayList<>();
for (Role role : roles) {
list.add(new SimpleGrantedAuthority("ROLE_" + role.getRoleName()));
}
return list;
}
/**
* 用户的添加
* @param userInfo
*/
@Override
public void save(UserInfo userInfo) throws Exception {
//对密码进行加密处理
userInfo.setPassword(bCryptPasswordEncoder.encode(userInfo.getPassword()));
userDao.save(userInfo);
}
}
4.启动项目进行测试添加用户,新添加的用户是否可以登录成功。
总结
到此这篇关于Spring Security使用数据库认证及用户密码加密和解密功能的文章就介绍到这了,更多相关Spring Security数据库认证内容请搜索易采站长站以前的文章或继续浏览下面的相关文章希望大家以后多多支持易采站长站!










