要使用RolesAllowed和球衣进行什么导入

时间:2012-11-08 09:51:02

标签: java http rest authorization jersey

我正在使用球衣来构建一个宁静的网络服务。 出于授权目的,我实现了一个AuthorizationFilter类,它实现了ContainerRequestFilter。我在我的web.xml中应用此过滤器,如下所示:

    <init-param>
         <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
         <param-value>filters.AuthorizationFilter</param-value>
    </init-param>

我的AuthorizationFilter根据身份验证的结果设置每个请求的SecurityContext。

request.setSecurityContext(new Authorizer(webuser));

我的授权人看起来像这样:

public class Authorizer implements SecurityContext {

    private WebUser webuser;
    private Principal principal;

    public Authorizer(final WebUser webuser) {
        this.webuser = webuser;
        this.principal = new Principal() {

            @Override
            public String getName() {
                return webuser.getUsername();
            }
        };
    }

    @Override
    public String getAuthenticationScheme() {
        return SecurityContext.FORM_AUTH;
    }

    @Override
    public Principal getUserPrincipal() {
        return principal;
    }

    @Override
    public boolean isSecure() {
        return true;
    }

    @Override
    public boolean isUserInRole(String role) {
        return role.equals(webuser.getRole());
    }

}

现在我想注释我的端点方法的允许角色:

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("{id}")
    @RolesAllowed({"EMPLOYEE"})
    @Override
    public Response Retreive(@PathParam("id") int id) {
        return super.Retreive(id);
    }

但它说“RolesAllowed无法解析为某种类型”。所以我的问题是。如何解决这个问题和b。我做得对吗?

提前致谢 克里斯

1 个答案:

答案 0 :(得分:0)

关于问题的第一部分:您可能缺少对Java EE API的依赖,其中定义了RolesAllowed注释(请参阅JavaDoc

如果您使用Maven构建项目,请尝试向{pom.xml}添加javax:javaee-web-api:6.0依赖项。