我有一个带有此安全配置的 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 在出现错误时将请求重定向到
/error
,但该端点需要身份验证,根据您的 FilterChain
定义。
你必须做一些类似的事情:
req
.requestMatchers("/api/user/**").permitAll()
.requestMatchers("/error").permitAll()
.anyRequest().authenticated()