Lyo*_*ang 1 java permissions rest cxf jax-rs
我编写了一个类扩展 ContainerRequestFilter 以进行权限检查。如何获取匹配方法的注释以进行权限检查。
@javax.ws.rs.ext.Provider
public class AuthorizationRequestFilter implements ContainerRequestFilter {
public void filter(ContainerRequestContext requestContext) throws IOException {
// how can I get resources' methods' annotation here?
// from the resource below , I want to checkout whether the target matched method contains the @ReadPermission annotation
}
}
@Path("/region")
public class Region {
@POST
@Path("/{region_id}")
@Produces({MediaType.APPLICATION_JSON , MediaType.APPLICATION_XML})
@ReadPermission
public String getRegion() {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用以下代码(CXF 专用):
public class AuthorizationRequestFilter implements ContainerRequestFilter {
public void filter(ContainerRequestContext requestContext) throws IOException {
Message message = JAXRSUtils.getCurrentMessage();
OperationResourceInfo operation = message.getExchange().get(OperationResourceInfo.class);
Method m = operation.getMethodToInvoke();
boolean hasAnnotation = m.getAnnotation(ReadPermission.class) != null;
}
}
Run Code Online (Sandbox Code Playgroud)
或者这个(JAX-RS的通用)
@Provider
public class AuthorizationRequestFilter implements ContainerRequestFilter {
@Context
private ResourceInfo resourceInfo;
@Override
public void filter(final ContainerRequestContext requestContext) throws IOException {
resourceInfo.getResourceMethod().getAnnotation(ReadPermission.class);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3890 次 |
| 最近记录: |