为什么Spring boot所有的ResponseStatusException错误都会翻译成403

问题描述 投票:0回答:1

我有一个带有此安全配置的 Spring boot 应用程序:

http.csrf(AbstractHttpConfigurer::disable)
                .authorizeHttpRequests(req ->
                        req.requestMatchers("/api/user/**")
                                .permitAll()
                                .anyRequest()
                                .authenticated()
                )
                .sessionManagement(session -> session.sessionCreationPolicy(STATELESS))
                .authenticationProvider(authenticationProvider)
                .addFilterBefore(jwtAuthFilter, UsernamePasswordAuthenticationFilter.class);

在我的应用程序代码中,我抛出了 ResponseStatusException:

return Optional.ofNullable(taskService.getTaskById(id)
                .orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Task not found.")));

但是我得到的 api 响应始终是 403 错误。为什么响应没有获取 404 响应代码和错误消息。我设置了例外吗?

当我收到 200 ,201 代码时,它的代码和消息是正确的,但错误代码不会发送错误代码或消息。

spring spring-boot spring-mvc spring-security
1个回答
0
投票

默认情况下,Spring 在出现错误时将请求重定向到

/error
,但该端点需要身份验证,根据您的
FilterChain
定义。

你必须做一些类似的事情:

req
    .requestMatchers("/api/user/**").permitAll()
    .requestMatchers("/error").permitAll()
    .anyRequest().authenticated()
© www.soinside.com 2019 - 2024. All rights reserved.