【发布时间】:2020-08-23 19:04:24
【问题描述】:
我正在构建一个基于 Spring 网关和 webflux 的应用程序,它与 okta 作为授权服务器集成。
在前端通过 okta 服务器对用户进行身份验证后,它会获取一个令牌,该令牌必须在每个请求标头中用作承载令牌。
我现在正在开发的端点负责根据分配给该用户的组从反应式 mongodb 中检索与该经过身份验证的用户相关的所有菜单。
用户的组是从 okta JWT 令牌中提取的,之后我应该查询以选择与这些组相关的所有菜单。
问题是我无法使用提取的组名称来使用它从响应式 mongodb 进行查询
@RequestMapping("/menus")
public Mono oauthUserInfo() {
return ReactiveSecurityContextHolder.getContext().filter(c -> Objects.nonNull(c.getAuthentication()))
.map(s -> s.getAuthentication().getAuthorities().stream().filter((g) ->g.getAuthority().startsWith("GR_")));
}
访问上述 endpint 正在检索经过身份验证的用户组,如下所示:
[
{
"authority": "GR_user"
},
{
"authority": "GR_admin"
}
]
我的主要问题是,我如何使用它从我的反应式 mongodb 中使用“in”运算符检索相关菜单并检索 Flux
【问题讨论】:
-
您是否已经尝试过
flatMapMany()?
标签: spring spring-boot spring-webflux okta