当您尝试在运行时注册新用户时,AuthenticationManagerBuilder的内存身份验证不起作用,可能是由于以下原因:
inMemoryAuthentication()
方法来配置内存身份验证。例如:@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("username")
.password("password")
.roles("USER");
}
}
在上面的示例中,我们使用withUser()
方法添加了一个用户名为"username"、密码为"password"、角色为"USER"的用户。
passwordEncoder()
方法指定密码加密器。例如:@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
PasswordEncoder encoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
auth.inMemoryAuthentication()
.withUser("username")
.password(encoder.encode("password"))
.roles("USER");
}
}
在上面的示例中,我们使用PasswordEncoderFactories.createDelegatingPasswordEncoder()
方法创建了一个密码加密器,并使用encode()
方法对密码进行加密。
antMatchers()
方法来配置请求路径的权限。例如:@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/register").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.httpBasic();
}
}
在上面的示例中,我们使用antMatchers("/register").permitAll()
配置了"/register"路径允许所有用户访问。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云