Jersey SecurityContext.getUserPrincipal()对于非单例资源返回null

时间:2019-06-28 01:09:20

标签: jax-rs jersey-2.0

我的资源不是一个Singleton,在每个新的Request上,我都可以看到我的Resource构造函数正在被调用。我在构造函数中注入了@Context SecurityContext,然后将Principal设为securityContext.getUserPrincipal()

问题是,我正在SecurityContext中构建ContainerRequestFilter,在那里我从Autorization标头中的令牌中获取用户并创建一个新的SecurityContext,但是ContainerRequestFilter运行之后,资源已创建,因此在构建时securityContext.getUserPrincipal()返回null。

我想避免在资源的每种方法中都调用securityContext.getUserPrincipal(),那么有什么方法可以使ContainerRequestFilter在资源的创建之前之前运行?

1 个答案:

答案 0 :(得分:0)

@PreMatching上添加ContainerRequestFilter注释可以使其在框架选择和创建资源之前运行。