我正在使用球衣来构建一个宁静的网络服务。 出于授权目的,我实现了一个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。我做得对吗?
提前致谢 克里斯
答案 0 :(得分:0)
关于问题的第一部分:您可能缺少对Java EE API的依赖,其中定义了RolesAllowed
注释(请参阅JavaDoc)
如果您使用Maven构建项目,请尝试向{pom.xml}添加javax:javaee-web-api:6.0
依赖项。