我需要以静态方式访问当前用户(之前由ContainerRequestFilter
设置),以避免在每个中传递@Context SecurityContext
每个 Controller 的方法。
我想要实现一些在 Spring 中我会做的事情
SecurityContextHolder.getContext().getAuthentication();
除了在 Quarkus 中使用 Spring Security 之外,还有什么方法可以做到这一点吗?
最佳答案
解决方案是使用此依赖项
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-oidc</artifactId>
</dependency>
然后您可以操作 SecurityIdentity
实例以“使其静态”
@Startup
@ApplicationScoped
public class UserUtilsService {
@Inject
private SecurityIdentity securityIdentity;
private static SecurityIdentity instance;
/**
* Gets the custom user.
*
* @return the custom user
*/
public static CustomUser getCustomUser() {
return (CustomUser) instance.getPrincipal();
}
@PostConstruct
private void setUp() {
instance = this.securityIdentity;
}
}
@StartUp
在应用程序启动时实例化 bean(而不是延迟)。
然后,您可以使用 UserUtilsService.getCustomUser();
静态访问主体
关于security - 我可以在 Quarkus 中静态访问 session 中的当前用户吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71928135/