wordpress媒体库 替换,合肥seo快排扣费,江苏网站建站系统哪家好,网站流量查询文章目录 一、修改密码编码器二、效果三、注意点1. RegisteredClient2. UserDetailsService 一、修改密码编码器
以BCryptPasswordEncoder举例。 直接将其注册成PasswordEncoder 的Bean即可。 Beanpublic PasswordEncoder passwordEncoder() {// 密码为明文方式
// ret… 文章目录 一、修改密码编码器二、效果三、注意点1. RegisteredClient2. UserDetailsService 一、修改密码编码器
以BCryptPasswordEncoder举例。 直接将其注册成PasswordEncoder 的Bean即可。 Beanpublic PasswordEncoder passwordEncoder() {// 密码为明文方式
// return NoOpPasswordEncoder.getInstance();// 或使用 BCryptPasswordEncoderreturn new BCryptPasswordEncoder();}二、效果
使用了加密算法后无论是RegisteredClient的密码还是UserDetailsService的密码都会以密文的方式存储在服务器上。
但是前端输入的密码仍然是以明文的方式出现并传到服务器之后服务器会对明文进行相同的手段指对同样的明文密文相同加密比较两个密文是否一致。
三、注意点
1. RegisteredClient Beanpublic 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 {AutowiredXcUserMapper xcUserMapper;Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {//根据username查询数据库XcUser xcUser xcUserMapper.selectOne(new LambdaQueryWrapperXcUser().eq(XcUser::getUsername, username));//用户不存在返回nullif (xcUser null){return null;}//用户存在拿到密码封装成UserDetails,密码对比由框架进行String password xcUser.getPassword();UserDetails userDetails User.withUsername(username).password(password).authorities(read).build();return userDetails;}
}