gpt4 book ai didi

spring-security - @PreAuthorize 如何在响应式(Reactive)应用程序中工作,或者如何在没有 ThreadLocal 的情况下生活?

转载 作者:行者123 更新时间:2023-12-03 17:35:13 24 4
gpt4 key购买 nike

你能解释一下哪里有咨询处理@PreAuthorize("hasRole('ADMIN')")检索 SecurityContext在响应式(Reactive)应用程序中?

以下 Spring Security 示例很好地说明了这种用法:https://github.com/spring-projects/spring-security/tree/5.0.0.M4/samples/javaconfig/hellowebflux-method

检查 Spring Security Webflux 源代码后,我发现了 SecurityContextRepository 的一些实现但是加载方法需要ServerWebExchange作为参数。

我试图了解如何替换 SecurityContextHolder.getContext().getAuthentication()调用标准服务(因为 ThreadLocal 不再是响应式应用程序中的选项),但我不明白如何用调用 SecurityContextRepository 来替换它没有关于 ServerWebExchange 的引用.

最佳答案

ReactiveSecurityContextHolder 以 react 方式提供身份验证,类似于 SecurityContextHolder .

它的 getContext() 方法提供了一个 Mono<SecurityContext> ,就像 SecurityContextHolder.getContext() 提供 SecurityContext .

ReactiveSecurityContextHolder
.getContext()
.map(context ->
context.getAuthentication()

关于spring-security - @PreAuthorize 如何在响应式(Reactive)应用程序中工作,或者如何在没有 ThreadLocal 的情况下生活?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46140451/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com