在springsecuritydemo下创建config包,下面创建SecurityConfig类
里面创建一个自定义密码的对象
SecurityConfig.java

/**
 * @author etern
 * @title: SecurityConfig
 * @projectName springsecuritydemo
 * @description: TODO SpringSecurity配置类
 * @date 2022/1/21 20:27
 */
//config注解
@Configuration
public class SecurityConfig {
    @Bean
    public PasswordEncoder getPw() {
        return new BCryptPasswordEncoder();
    }
}

创建service层下impl下的UserDetailServiceImpl类
UserDetailServiceImpl.java

/**
 * @author etern
 * @title: UserDetailsServiceImpl
 * @projectName springsecuritydemo
 * @description: TODO UserDetailsService实现类
 * @date 2022/1/21 20:33
 */
@Service
public class UserDetailsServiceImpl implements UserDetailsService {


    @Autowired
    private PasswordEncoder pw;


    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        //1.查询数据库判断用户名是否存在,如果不存在就会抛出UsernameNotFoundException异常
        if (!"admin".equals(username)) {
            throw new UsernameNotFoundException("用户名不存在!");
        }
        //2.把查询出来的密码(注册时已经加密过)进行解析,或者直接把密码放入构造方法中
        String password = pw.encode("123");


        return new User(username, password, AuthorityUtils.commaSeparatedStringToAuthorityList("admin,normal"));
    }
}