Spring security 如何从ExceptionResolver访问ReactiveSecurityContextHolder?

Spring security 如何从ExceptionResolver访问ReactiveSecurityContextHolder?,spring-security,spring-webflux,Spring Security,Spring Webflux,我明白为了保持上下文,方法的反应链不能被打破。但是,我需要从ExceptionResolver获得对上下文的访问(在抛出异常之后) 我的异常解析器正在扩展AbstractErrorWebExceptionHandler,当我尝试通过ReactiveSecurityContextHolder.getContext()获取上下文时,它返回空。显然是因为反应链断裂了 如何访问身份验证对象?您可以通过覆盖句柄方法来访问身份验证对象: 公共类TestHandler扩展了AbstractErrorWebEx

我明白为了保持上下文,方法的反应链不能被打破。但是,我需要从ExceptionResolver获得对上下文的访问(在抛出异常之后)

我的异常解析器正在扩展
AbstractErrorWebExceptionHandler
,当我尝试通过
ReactiveSecurityContextHolder.getContext()获取上下文时,它返回空。显然是因为反应链断裂了


如何访问身份验证对象?

您可以通过覆盖
句柄
方法来访问身份验证对象:

公共类TestHandler扩展了AbstractErrorWebExceptionHandler{
公共TestHandler(ErrorAttributes ErrorAttributes,ResourceProperties ResourceProperties,
应用程序上下文(应用程序上下文){
超级(errorAttributes、resourceProperties、applicationContext);
}
@凌驾
受保护的路由函数getRoutingFunction(ErrorAttributes ErrorAttributes){
返回null;
}
@凌驾
公共Mono句柄(ServerWebExchange,Throwable-Throwable){
Mono authObject=exchange.getPrincipal();
//在这里处理异常
返回exchange.getResponse().setComplete();
}
}
另一种方法是直接实现
ErrorWebExceptionHandler

公共类TestHandler实现ErrorWebExceptionHandler{
@凌驾
公共Mono句柄(ServerWebExchange ServerWebExchange,Throwable Throwable){
Mono authObject=serverWebExchange.getPrincipal();
//在这里处理异常
返回serverWebExchange.getResponse().setComplete();
}
}