覆盖Jersey 2.5.1中的RolesAllowedDynamicFeature

时间:2014-01-29 17:48:54

标签: java jersey jax-rs jersey-2.0

短而甜蜜:

我希望能够过滤传入的请求以对用户进行身份验证,然后获取我的数据库中定义的角色并在Jersey 2.5.1服务类中使用它们。

e.g。

@RolesAllowed("Custom1", "Custom2")
@Post

.....

目前我有以下内容,它似乎与基本的@PermitAll和@DenyAll注释一起使用,我只是不知道如何重载/重载什么来获得一些使用Jersey 2.5.1的自定义代码。我见过Jersey1的例子。我应该只创建一个请求过滤器并在那里进行并设置securityContext吗?任何帮助将不胜感激。

   public class TestApi extends ResourceConfig {
    public TestApi() {
        super(AuthenticateResource.class);
        register(RolesAllowedDynamicFeature.class);
       }
    }

2 个答案:

答案 0 :(得分:1)

弄清楚我的问题。注入的资源信息然后拉出注释。如果它不是预匹配

,则有效
@Context
private ResourceInfo resourceInfo;

Annotation[] annotations = resourceInfo.getResourceMethod().getDeclaredAnnotations();

答案 1 :(得分:0)

SecurityContext由基础容器设置,或者在应用程序中手动设置(通常在ContainerRequestFilter中)。如果您的容器足够复杂,可以为您设置正确的安全上下文(使用正确的主体),您可以这样做。否则,请创建与Jersey示例ContainerAuthFilter中的自定义ContainerRequestFilter类似的自定义{{1}}。