我无法访问由我的CAS认证系统认证的java.security.Principal
。 serverWebExchange.getPrincipal()
始终为空。
实际上,这是DefaultServerWebExchange
的实现:
@Override
public <T extends Principal> Mono<T> getPrincipal() {
return Mono.empty();
}
ServerWebExchange
的另一种实现是ServerWebExchangeDecorator
,其文档显示:
注意:如果使用装饰器的目的是覆盖属性 与
getPrincipal()
类似,请考虑使用ServerWebExchange.mutate()
代替。
因此,我的第一个问题是:如果那是我应该做的,那么在我的WebFlux Security配置中(在下面)什么时候应该使用ServerWebExchange.mutate().getPrincipal()
覆盖{ {1}}?
我的第二个问题是:我应该如何获取预先认证的非反应性请求主体?
到目前为止,我发现从ServerWebExchange
检索请求Principal的唯一方法是使用反射。但这显然不是我应该做的。
ServerWebExchange.getPrincipal()