如何在 Spring WebFlux 上自定义未经授权的响应
Posted
技术标签:
【中文标题】如何在 Spring WebFlux 上自定义未经授权的响应【英文标题】:How to customize an unauthorized response on Spring WebFlux 【发布时间】:2019-09-23 02:24:58 【问题描述】:我正在使用 Spring Webflux 开始一个新项目,但现在我无法弄清楚如何处理 401 响应。
通常我通过 @ExceptionHandler( InvalidTokenException.class, AuthenticationException.class )
在 Spring Boot 上使用 Tomcat 处理它。
这是我的控制器建议:
@ExceptionHandler( InvalidTokenException.class, AuthenticationException.class )
public ResponseEntity<Mono<ApiResponse>> handleError401(ServerHttpRequest request, Exception e)
return new ResponseEntity<Mono<ApiResponse>>(
Mono.just(
ApiResponse
.builder()
.success(false)
.code(ResponseType.AUTHENTICATION_ERROR.getCode())
.responseType(ResponseType.AUTHENTICATION_ERROR)
.message("login failed")
.build()
),
HttpStatus.UNAUTHORIZED
);
编辑:
我也试过了,没有抛出异常
@ExceptionHandler( Exception.class )
public ResponseEntity<Mono<ApiResponse>> handleError401(ServerHttpRequest request, Exception e)
return new ResponseEntity<Mono<ApiResponse>>(
Mono.just(
ApiResponse
.builder()
.success(false)
.code(ResponseType.AUTHENTICATION_ERROR.getCode())
.responseType(ResponseType.AUTHENTICATION_ERROR)
.message("login failed")
.build()
),
HttpStatus.UNAUTHORIZED
);
【问题讨论】:
【参考方案1】:尝试暂时将父 Exception.class
放入 @ExceptionHandler
以检查您是否获得了预期的异常类型。有时它会被包装到其他类型的异常中,例如UndeclaredThrowableException
。
【讨论】:
我已经进行了更改,但我没有成功...没有抛出异常。我会继续寻找解决方案。问候!以上是关于如何在 Spring WebFlux 上自定义未经授权的响应的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Security Grails 上自定义 /login/authenticate?
JAVA-Spring注解实现AOP权限拦截,如何取得方法上自定义Annotation的值呢?
spring5 webflux,如何返回自定义json数据?
如何在 Spring Boot 和 Spring WebFlux 中使用“功能 bean 定义 Kotlin DSL”?