我的资源不是一个Singleton,在每个新的Request上,我都可以看到我的Resource构造函数正在被调用。我在构造函数中注入了@Context SecurityContext
,然后将Principal
设为securityContext.getUserPrincipal()
。
问题是,我正在SecurityContext
中构建ContainerRequestFilter
,在那里我从Autorization
标头中的令牌中获取用户并创建一个新的SecurityContext
,但是ContainerRequestFilter
运行之后,资源已创建,因此在构建时securityContext.getUserPrincipal()
返回null。
我想避免在资源的每种方法中都调用securityContext.getUserPrincipal()
,那么有什么方法可以使ContainerRequestFilter
在资源的创建之前之前运行?
答案 0 :(得分:0)
在@PreMatching
上添加ContainerRequestFilter
注释可以使其在框架选择和创建资源之前运行。