本文介绍: 是因为,加密这个行为,只在服务器校验前端发送的明文时使用,至于对照物,则是代码中提供好的密文,所以这个需要提供密文。的方式出现并传到服务器,之后服务器会对明文进行相同的手段(指对同样的明文,密文相同)加密,比较两个密文是否一致。下面的代码中数据库保存的是password密文。的密码,都会以密文的方式存储在服务器上。也是,密码也需要提供现成的密文形式。但是前端输入的密码仍然是以。使用了加密算法后,无论是。
一、修改密码编码器
以BCryptPasswordEncoder
举例。
直接将其注册成PasswordEncoder
的Bean
即可。
@Bean
public PasswordEncoder passwordEncoder() {
// 密码为明文方式
// return NoOpPasswordEncoder.getInstance();
// 或使用 BCryptPasswordEncoder
return new BCryptPasswordEncoder();
}
二、效果
使用了加密算法后,无论是RegisteredClient
的密码还是UserDetailsService
的密码,都会以密文的方式存储在服务器上。
但是前端输入的密码仍然是以明文
的方式出现并传到服务器,之后服务器会对明文进行相同的手段(指对同样的明文,密文相同)加密,比较两个密文是否一致。
三、注意点
1. RegisteredClient
@Bean
public RegisteredClientRepository registeredClientRepository() {
RegisteredClient registeredClient = RegisteredClient.withId(UUID.randomUUID().toString())
.clientId("XcWebApp")
.clientSecret(passwordEncoder().encode("XcWebApp"))
.build();
return new InMemoryRegisteredClientRepository(registeredClient);
}
RegisteredClient
中clientSecret
仍然需要提供密文。
是因为,加密这个行为,只在服务器校验前端发送的明文时使用,至于对照物,则是代码中提供好的密文,所以这个需要提供密文。
2. UserDetailsService
对于UserDetailsService
也是,密码也需要提供现成的密文形式。
下面的代码中数据库保存的是password密文。
@Component
@Slf4j
public class UserServiceImpl implements UserDetailsService {
@Autowired
XcUserMapper xcUserMapper;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
//根据username查询数据库
XcUser xcUser = xcUserMapper.selectOne(new LambdaQueryWrapper<XcUser>()
.eq(XcUser::getUsername, username));
//用户不存在,返回null
if (xcUser == null){
return null;
}
//用户存在,拿到密码,封装成UserDetails,密码对比由框架进行
String password = xcUser.getPassword();
UserDetails userDetails = User.withUsername(username).password(password).authorities("read").build();
return userDetails;
}
}
原文地址:https://blog.csdn.net/m0_51390969/article/details/136082531
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_67945.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。