Spring Security

您所在的位置:网站首页 idea是什么加密 Spring Security

Spring Security

2024-07-07 09:31| 来源: 网络整理| 查看: 265

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