0

我正在使用 jersey 构建一个宁静的网络服务。出于授权目的,我实现了一个实现 ContainerRequestFilter 的类 AuthorizationFilter。我在我的 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。我做对了吗?

在此先感谢克里斯

4

1 回答 1

0

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

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

于 2012-11-08T10:48:48.707 回答