【问题标题】:Jersey SecurityContext.getUserPrincipal() returns null for non Singleton ResourceJersey SecurityContext.getUserPrincipal() 为非单例资源返回 null
【发布时间】:2019-06-28 01:09:20
【问题描述】:

我的资源不是单例,在每个新的请求中我都可以看到我的资源构造函数被调用。我在构造函数中注入@Context SecurityContext,然后将Principal 作为securityContext.getUserPrincipal()

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

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

【问题讨论】:

    标签: jax-rs jersey-2.0


    【解决方案1】:

    @PreMatching 注解添加到ContainerRequestFilter 使其在框架选择和创建资源之前运行。

    【讨论】:

      猜你喜欢
      • 2013-09-08
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      • 1970-01-01
      • 2017-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多