app开发者平台在数字化时代的重要性与发展趋势解析
534
2023-06-21
Spring Security使用数据库认证及用户密码加密和解密功能
流程图:
1.接上一篇博客https://mp.csdn-/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" />
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" />
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"
/>
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<http://;SimpleGrantedAuthority> getAuthority(List
List
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~