怎么在Spring Security中使用数据库认证

今天就跟大家聊聊有关怎么在Spring Security中使用数据库认证,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

流程图:

spring-security.xml中的配置:





























//userService是认证器需要定义出来










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

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

@Service("userService")//这个名字必须与spring-security.xml中配置的认证器名字一样

publicclassUserServiceImplimplementsIUserService{
@Autowired
privateIUserDaouserDao;
@Autowired//当执行保存用户的时候对用户的密码进行加密
privateBCryptPasswordEncoderbCryptPasswordEncoder;
@Override
publicUserDetailsloadUserByUsername(Stringusername)throwsUsernameNotFoundException{
UserInfouserInfo=null;
try{
userInfo=userDao.findByUsername(username);//调用到层根据用户查找用户信息,返回值为UserInfo对象
}catch(Exceptione){
e.printStackTrace();
}
//处理自己的用户对象封装成UserDetails
//Useruser=newUser(userInfo.getUsername(),"{noop}"+userInfo.getPassword(),getAuthority(userInfo.getRoles()));//下面这个三元表达式代表该账户是否激活可用
Useruser=newUser(userInfo.getUsername(),userInfo.getPassword(),userInfo.getStatus()==0?false:true,true,true,true,getAuthority(userInfo.getRoles()));
returnuser;
}
//作用就是返回一个List集合,集合中装入的是角色描述
publicListgetAuthority(Listroles){
Listlist=newArrayList<>();
for(Rolerole:roles){
list.add(newSimpleGrantedAuthority("ROLE_"+role.getRoleName()));
}
returnlist;
}
/**
*用户的添加
*@paramuserInfo
*/
@Override
publicvoidsave(UserInfouserInfo)throwsException{
//对密码进行加密处理
userInfo.setPassword(bCryptPasswordEncoder.encode(userInfo.getPassword()));
userDao.save(userInfo);
}
}

4.启动项目进行测试添加用户,新添加的用户是否可以登录成功。

看完上述内容,你们对怎么在Spring Security中使用数据库认证有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注恰卡编程网行业资讯频道,感谢大家的支持。

发布于 2021-03-21 22:39:33
分享
海报
169
上一篇:如何在Go语言中使用正则表达式下一篇:使用wxpy怎么自动发送微信消息
目录

    推荐阅读

    忘记密码?

    图形验证码