-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Open
Description
对以下问题有疑问:
比如我在SaServletFilter之后定义了一个拦截器,我需要获取token的一些内容无法正常获取
< 备注:请尽量详细描述问题所在 >
关联问题,#867
期望调整为(最后的filter处理完成之后再释放),调整后的伪代码如下:
Consumer<SignalType> onFinallyConsumer = (signalType) -> {
SaReactorSyncHolder.clearContext();
};
return new SaReactorFilter() {
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
// ---------- 全局认证处理
try {
SaReactorSyncHolder.setContext(exchange);
beforeAuth.run(null);
SaRouter.match(includeList).notMatch(excludeList).check(r -> auth.run(null));
// 继续执行后续 filter,并在整个流结束后清理上下文
return chain.filter(exchange).doFinally(onFinallyConsumer);
} catch (StopMatchException ignored) {
return chain.filter(exchange).doFinally(onFinallyConsumer);
} catch (BackResultException e) {
return SaReactorOperateUtil.writeResult(exchange, e.getMessage()).doFinally(onFinallyConsumer);
} catch (Throwable e) {
return SaReactorOperateUtil.writeResult(exchange, String.valueOf(error.run(e))).doFinally(onFinallyConsumer);
} finally {
//SaReactorSyncHolder.clearContext();
}
}
}
Metadata
Metadata
Assignees
Labels
No labels