无法在spring引导中访问不安全的get端点

8mmmxcuj  于 2021-09-29  发布在  Java
关注(0)|答案(0)|浏览(222)

在控制器中,我有两个端点,其中一个具有预授权注解,另一个没有:

@GetMapping
public UserResponse getUser(){
 Authentication auth = SecurityContextHolder.getContext().getAuthentication();
 //get and return User...
}

@PreAuthorize("hasRole('ROLE_ADMIN')")
@PostMapping
public UserResponse createUser(@RequestBody UserRequestDetails userDetails){...}

安全端点正常,仅当我已登录并且具有正确角色的令牌放置在请求头中时才起作用。但当我想在没有预授权注解的情况下访问端点时,我总是得到403禁止状态。我希望在用户登录时访问getuser端点,而不考虑他们可能具有的角色。
以下是我的安全配置:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurity extends WebSecurityConfigurerAdapter{
   @Override
   protected void configure(HttpSecurity http) throws Exception{
       http.csrf().disable()
      .authorizeRequests()
      .antMatchers(HttpMethod.POST, "/login").permitAll()
      .anyRequest().authenticated()
      .and()
      .addFilterBefore(getAuthenticationFilter(),    UsernamePasswordAuthenticationFilter.class)
      .addFilterBefore(jwtAuthorizationFilterBean(), UsernamePasswordAuthenticationFilter.class)
       .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().cors();
   }
}

感谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题