我正在使用Sping Boot Webflux启动一个新项目,但现在我不知道如何处理401响应。
我想返回一个包含响应代码的消息体。响应代码正常,并按预期工作。现在,我如何注入消息体以给予更详细和描述性的响应,如下所示。
{
"statusCode": "401",
"statusMessage": "Unauthorized",
"timestamp": "Sun May 07 10:30:23 GMT 2023"
}
字符串
这是我的Spring安全配置类的一部分:
@Bean
public SecurityWebFilterChain securityFilterChain(ServerHttpSecurity http) {
return http
.cors().and()
.csrf().disable()
//Disable Sessions
.securityContextRepository(NoOpServerSecurityContextRepository.getInstance())
// handlers for 401 to return a 401 status, message and timestamp
//rest services don't have a login form
.formLogin()
.disable()
.authorizeExchange()
.pathMatchers("/api/v1/get-token").hasRole("API")
.and()
.httpBasic()
.and()
.build();
}
型
一切都很好,我只想返回一个消息体JSON,而不仅仅是HTTP响应代码。有人知道吗
2条答案
按热度按时间jei2mxaa1#
提供一个使用
security
提供的entryPoint的解决方案。相应的代码片段如下所示。1.自定义入口点
字符串
1.注册入口点
型
fcipmucu2#
您也可以使用全局异常处理来拦截
AuthenticationException
并返回自定义响应:字符串
您也可以从处理程序返回
ResponseEntity<CustomResponse>
,以便在需要时自定义响应头