Spring Security 升级到5之后,对密码存储格式做出改变。

格式:{id}encodedPassword

如果在main函数中做简单的测试的话可以如下:

 public static void main(String[] args) {
        User user = (User) User.withUsername("admin").password("{bcrypt}"+new BCryptPasswordEncoder().encode("admin")).roles("USER").build();
        UserDetailsService service = new InMemoryUserDetailsManager();
        ((InMemoryUserDetailsManager)service).createUser(user);
        System.out.println(user.getPassword());
        DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
        provider.setUserDetailsService(service);

        List<AuthenticationProvider> list = new ArrayList<>();
        list.add(provider);

        AuthenticationManager manager = new ProviderManager(list);
        UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("admin","admin");
        System.out.println(">>>>" + token);
        Authentication authentication = manager.authenticate(token);
        System.out.println(authentication);

    }

或者使用官方文档推荐的:https://spring.io/blog/2017/11/01/spring-security-5-0-0-rc1-released

Spring Security 5 密码

相关文章: