在学springsecurity5.X时,在demo里,内存配置用户的时候,提示withDefaultPasswordEncoder过期,特查看了源码,官方给出的理由是:spring
/** @deprecated */ @Deprecated public static User.UserBuilder withDefaultPasswordEncoder() { logger.warn("User.withDefaultPasswordEncoder() is considered unsafe for production and is only intended for sample applications."); PasswordEncoder encoder = PasswordEncoderFactories.createDelegatingPasswordEncoder(); User.UserBuilder var10000 = builder(); encoder.getClass(); return var10000.passwordEncoder(encoder::encode); }
@Deprecated 弃用的意思安全
日志里也写得清楚弃用的缘由:不安全app
因此,换了个写法,以下:ide
/** * 在内存中配置一个用户,admin/admin分别是用户名和密码,这个用户拥有USER角色。 * withDefaultPasswordEncoder 被遗弃,缘由是不安全,只能在例子中使用 * @param auth * @throws Exception */ @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { // withDefaultPasswordEncoder被弃用,用如下方式
PasswordEncoder encoder = PasswordEncoderFactories.createDelegatingPasswordEncoder(); auth.inMemoryAuthentication() // .withUser(User.withDefaultPasswordEncoder().username("admin")
.withUser("admin") .password(encoder.encode("admin")).roles("USER"); }