Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Spring WebFlux上自定义未经授权的响应_Spring_Spring Boot_Spring Security_Spring Webflux - Fatal编程技术网

如何在Spring WebFlux上自定义未经授权的响应

如何在Spring WebFlux上自定义未经授权的响应,spring,spring-boot,spring-security,spring-webflux,Spring,Spring Boot,Spring Security,Spring Webflux,我正在使用SpringWebFlux启动一个新项目,但现在我不知道如何处理401个响应 通常我在使用Tomcat的Spring引导时通过@ExceptionHandler({InvalidTokenException.class,AuthenticationException.class})处理它 以下是我的建议: @ExceptionHandler({ InvalidTokenException.class, AuthenticationException.class }) p

我正在使用SpringWebFlux启动一个新项目,但现在我不知道如何处理401个响应

通常我在使用Tomcat的Spring引导时通过
@ExceptionHandler({InvalidTokenException.class,AuthenticationException.class})处理它

以下是我的建议:

    @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({InvalidTokenException.class,AuthenticationException.class})
公共响应句柄错误401(ServerHttpRequest请求,异常e){
返回新响应(
单声道(
蜂群反应
.builder()
.成功(错)
.code(ResponseType.AUTHENTICATION\u ERROR.getCode())
.responseType(responseType.AUTHENTICATION\u错误)
.message(“登录失败”)
.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
        );
    }
@ExceptionHandler({Exception.class})
公共响应句柄错误401(ServerHttpRequest请求,异常e){
返回新响应(
单声道(
蜂群反应
.builder()
.成功(错)
.code(ResponseType.AUTHENTICATION\u ERROR.getCode())
.responseType(responseType.AUTHENTICATION\u错误)
.message(“登录失败”)
.build()
),
HttpStatus.UNAUTHORIZED
);
}

尝试临时将父级
异常.class
放入
@ExceptionHandler
中,以检查是否获得了预期的异常类型。有时它会被包装到其他类型的异常中,例如
未声明的HrowableException

尝试临时将父类
异常.class
放入
@ExceptionHandler
中,以检查您是否获得了预期的异常类型。有时它会被包装成其他类型的异常,例如
未声明的HrowableException

我已经做了更改,但没有成功。。。没有引发异常。我会继续寻找解决办法。当做我已经做出了改变,但我没有成功。。。没有引发异常。我会继续寻找解决办法。当做