Spring Security |
您所在的位置:网站首页 › idea是什么加密 › Spring Security |
PasswordEncoder 接口是用来加密的,这个接口提供了俩个方法:
String encode(CharSequence var1); 加密方法,返回加密后的密码。
boolean matches(CharSequence var1, String var2); 密码验证,返回密码是否一致。第一个参数是明文密码,第二个参数是加密后的密码(数据库取)
PasswordEncoder 是一个接口,而Security中我们要使用这个接口的实现类BCryptPasswordEncoder来实现密码加密和验证操作 使用BCryptPasswordEncoder进行密码加密和密码验证的流程:1.注册用户时,使用encode方法,即SHA-256+随机盐+密钥把用户输入的密码进行hash处理,得到密码的hash值,然后将其存入数据库中。 2.用户登录时,使用matches方法进行验证。注册的密码并不会进行密码解密(因为密码经过Hash处理,是不可逆的),而是使用相同的算法把用户输入的密码进行hash处理,得到密码的hash值,然后将其与从数据库中查询到的密码hash值进行比较。如果两者相同,说明用户输入的密码正确。 使用BCryptPasswordEncoder实现密码加密和验证:1.自定义声明BCryptPasswordEncoder类的Bean,该类是PasswordEncoder接口的实现类。 @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); }2.使用encode方法加密密码,做保存。 String encodePassword = passwordEncoder.encode(umsAdmin.getPassword()); umsAdmin.setPassword(encodePassword); adminMapper.insert(umsAdmin);3.登录校验时使用matches方法校验密码是否正确。 UserDetails userDetails = loadUserByUsername(username);//数据库中存储的密码 if(!passwordEncoder.matches(password,userDetails.getPassword())){ throw new BadCredentialsException("密码不正确"); }
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |