什么是 Resteasy 3.X PreProcessInterceptor 的正确替代品?
我正在使用身份验证/授权机制构建 rest 服务,如本教程中所述:http://howtodoinjava.com/2013/06/26/jax-rs-resteasy-basic-authentication-and-authorization-tutorial/
基本上,它使用 PreProcessInterceptor 接口来扫描目标方法中的注释(来自 javax.annotation.security 包),这些注释描述了访问该方法所需的角色。由于此处的身份验证器是侦听器,因此它可以取消目标方法调用,并在需要时返回 401(未经授权)。
这里的问题是,在当前的 RestEasy 版本 (3.0.1) 中,接口 org.jboss.resteasy.spi.interception.PreProcessInterceptor 已被弃用,并且我在尝试使用标准 JAX-RS 接口实现相同的行为时遇到问题。
我正在使用javax.ws.rs.ext.ReaderInterceptor接口来拦截调用。但不知何故,服务器从不调用它:拦截器只是被忽略了。
我注册拦截器/资源的方式与使用以前的 PreProcessInterceptor 的方式相同,并使用相同的@Provider和@ServerInterceptor注释:
服务器应用程序:
public class ServerApplication extends javax.ws.rs.core.Application {
private final HashSet<Object> singletons = new LinkedHashSet<Object>();
public ServerApplication() {
singletons.add(new SecurityInterceptor());
singletons.add( ... ); //add each of my rest resources
}
@Override
public Set<Class<?>> getClasses() {
HashSet<Class<?>> set = new HashSet<Class<?>>();
return set;
}
@Override
public Set<Object> getSingletons() {
return singletons;
}
}
安全接收器:
@Provider
@ServerInterceptor
public class SecurityInterceptor implements javax.ws.rs.ext.ReaderInterceptor {
@Override
public Object aroundReadFrom(ReaderInterceptorContext context){
//code that is never called... so lonely here...
}
}
关于如何解决此问题的任何见解?
谢谢。