Spring Security使用数据库认证及用户密码加密和解密功能

网友投稿 365 2022-12-13


Spring Security使用数据库认证及用户密码加密和解密功能

流程图:

1.接上一篇博客https://mp.csdn.net/console/editor/html/104576494,准备好环境。

2.spring-security.xml中的配置:

xmlns:security="http://springframework.org/schema/security"

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://springframework.org/schema/beans

http://springframework.org/schema/beans/spring-beans.xsd

http://springframework.org/schema/security

http://springframework.org/schema/security/spring-security.xsd">

login-page="/login.jsp"

login-processing-url="/login.do"//请求路径

default-target-url="/index.jsp"

authentication-failure-url="/failer.jsp"

authentication-success-forward-url="/pages/main.jsp"

/>

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

xmlns:security="http://springframework.org/schema/security"

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://springframework.org/schema/beans

http://springframework.org/schema/beans/spring-beans.xsd

http://springframework.org/schema/security

http://springframework.org/schema/security/spring-security.xsd">

login-page="/login.jsp"

login-processing-url="/login.do"//请求路径

default-target-url="/index.jsp"

authentication-failure-url="/failer.jsp"

authentication-success-forward-url="/pages/main.jsp"

/>

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

login-page="/login.jsp"

login-processing-url="/login.do"//请求路径

default-target-url="/index.jsp"

authentication-failure-url="/failer.jsp"

authentication-success-forward-url="/pages/main.jsp"

/>

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

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&lthttp://;SimpleGrantedAuthority> getAuthority(List roles) {

List 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.启动项目进行测试添加用户,新添加的用户是否可以登录成功。

总结


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:win10系统64位jdk1.8的下载与安装教程图解
下一篇:java使用ffmpeg实现上传视频的转码提取视频的截图等功能(代码操作)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~