我的登录账号在春季启动时无效



我想在spring boot中使用userdetails方法提供的账号登录,但是不能使用。这是我的WebSecurityConfiguration类。它给了我不好的证书。任何想法?我是新来的春靴。


@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
private PasswordEncoder passwordEncoder;
@Autowired
public SecurityConfiguration(PasswordEncoder passwordEncoder) {
this.passwordEncoder = passwordEncoder;
}

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/api/admin").hasRole("admin")
.antMatchers("/api/user").hasRole("user")
.antMatchers("/api/student").hasRole("STUDENT")
.antMatchers("/api/computer").hasRole("COMPUTER")
.antMatchers("/api/root").permitAll()
.anyRequest().authenticated()
.and().httpBasic()
.and().formLogin();
}
@Override
protected UserDetailsService userDetailsService() {
UserDetails user = User.builder()
.username("student")   //ROLE_STUDENT
.password(passwordEncoder.encode("student"))
.roles("STUDENT")
.build();
UserDetails user2 = User.builder()
.username("computer")
.password(passwordEncoder.encode("computer"))
.roles("COMPUTER")
.build();
return new InMemoryUserDetailsManager(user, user2);
}
}

你可能需要添加更多的细节。

例如,您请求的API,它的参数是什么,原始HTTP格式更好。

我想

.antMatchers("/api/admin").hasRole("admin")
.antMatchers("/api/user").hasRole("user")

你应该使用大写的"ADMIN"one_answers"USER">

.antMatchers("/api/admin").hasRole("ADMIN")
.antMatchers("/api/user").hasRole("USER")

并添加密码到InMemoryUserDetailsManager

UserDetails user3 = User.builder()
.username("user")
.password(passwordEncoder.encode("user"))
.roles("USER")
.build();
UserDetails user4 = User.builder()
.username("admin")
.password(passwordEncoder.encode("admin"))
.roles("ADMIN")
.build();

相关内容

  • 没有找到相关文章

最新更新