Lucas_Cavalcanti
se vc quer anotar método precisa colocar também no @Target o valor ElementType.METHOD
Mauricio_de_Mello
Bom dia Lucas o objetivo é anotar somente a Classe do controlador, mas não esta entrando no método intercept.
valeu
Lucas_Cavalcanti
como está o método accept?
Mauricio_de_Mello
ele não entra no método intercept, teria outra forma de debugar isto?
abs
package teste.intercepts;
import teste.controllers.LoginController;
import br.com.caelum.vraptor.InterceptionException;
import br.com.caelum.vraptor.Intercepts;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.core.InterceptorStack;
import br.com.caelum.vraptor.interceptor.Interceptor;
import br.com.caelum.vraptor.resource.ResourceMethod;
@Intercepts
public class AuthorizationInterceptor implements Interceptor {
private final UserInfo userInfo;
private final Result result;
public AuthorizationInterceptor(UserInfo userInfo, Result result) {
this.userInfo = userInfo;
this.result = result;
}
@Override
public boolean accepts(ResourceMethod method) {
return method.containsAnnotation(Authentication.class);
}
@Override
public void intercept(InterceptorStack stack, ResourceMethod method,
Object resourceInstance) throws InterceptionException {
System.out.println(userInfo.getUser() + " << entrou");
if (userInfo.getUser() == null) {
result.include("error", "Acesso negado.");
result.redirectTo(LoginController.class).index();
} else {
stack.next(method, resourceInstance);
}
}
}
Lucas_Cavalcanti
method.containsAnnotation não verifica se tem a anotação na classe (bizarro, eu sei)
faça:
method.getResource().getType().isAnnotationPresent(Authentication.class);
Mauricio_de_Mello
Vivendo e aprendendo 
obrigado.