我正在编写一个Springboot api rest,但是我遇到了一个关于Spring安全的问题。当我想向服务器发出请求时,它抛出了未经授权的401,但是我已经配置了Spring安全。下面是代码:
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Bean
PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable().authorizeRequests().antMatchers(HttpMethod.GET, "/characters/**").permitAll()
.anyRequest()
.authenticated()
.and()
.httpBasic();
}
@Override
@Bean
protected UserDetailsService userDetailsService() {
UserDetails admin= User.builder().username("admin").password(passwordEncoder().encode("123")).roles("ADMIN")
.build();
UserDetails user= User.builder().username("user").password(passwordEncoder().encode("123")).roles("USER")
.build();
return new InMemoryUserDetailsManager(admin,user);
}
}
请求方法:
@PreAuthorize("hasRole('ADMIN')")
@RequestMapping(value ="/characters" ,method = RequestMethod.GET)
public List<ImagenNombreDTO> listarPersonajes(){
try {
return personajeService.listarPersonajes();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
1条答案
按热度按时间zi8p0yeb1#
在www.example.com文件的antmatchers()方法中进行以下更改SecurityConfig.java。
再添加一个“/characters”端点条目,如下所示,然后查看错误是否仍然存在。