在控制器中,我有两个端点,其中一个具有预授权注解,另一个没有:
@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();
}
}
感谢
暂无答案!
目前还没有任何答案,快来回答吧!