Vraptor4 + Brutauth

128 views
Skip to first unread message

Fabio Ebner

unread,
Aug 12, 2014, 8:42:44 AM8/12/14
to Vraptor
Pessoal..


Estou comecando a mexer com BrutAuth e fiquei com uma duvida, no github fala que preciso anotar com @component (do vraptor) porem no 4 nao tem esse @Component.

outra coisa e aquele UserSession, e uma variavel do vraptor? pq pra mim tbm nao aparece nada


obrigado

Renan Montenegro

unread,
Aug 12, 2014, 8:58:13 AM8/12/14
to caelum-...@googlegroups.com
Fábio, o README do BrutAuth ainda não está com VRaptor 4.

O UserSession não é uma classe do VRaptor, é apenas como exemplo.


--
You received this message because you are subscribed to the Google Groups "caelum-vraptor" group.
To unsubscribe from this group and stop receiving emails from it, send an email to caelum-vrapto...@googlegroups.com.
To post to this group, send email to caelum-...@googlegroups.com.
Visit this group at http://groups.google.com/group/caelum-vraptor.
For more options, visit https://groups.google.com/d/optout.

Fabio Ebner

unread,
Aug 12, 2014, 9:22:30 AM8/12/14
to Vraptor
Entendi.. alguem pode me passar um exemplo basico entao para que eu possa iniciar.. obrigado

Leonardo Wolter

unread,
Aug 12, 2014, 9:46:13 AM8/12/14
to caelum-...@googlegroups.com
Oi Fábio! O readme está com VRaptor3, mas tudo que muda é que no VRaptor4 você não precisa anotar com @component e você usa @Controller em vez de @Resource no controller. 
Se quiser um exemplo você pode olhar essas classes do mamute:



Controller onde estamos usando essa rule(QuestionController#questionForm): https://github.com/caelum/mamute/blob/master/src/main/java/org/mamute/controllers/QuestionController.java#L99

Renan Montenegro

unread,
Aug 12, 2014, 9:51:14 AM8/12/14
to caelum-...@googlegroups.com
Por sinal já havia até aberto uma issue lá: https://github.com/caelum/vraptor-brutauth/issues/6

Leonardo Wolter

unread,
Aug 12, 2014, 9:53:40 AM8/12/14
to caelum-...@googlegroups.com
Boa Renan, assim que tiver um tempinho eu tento pegar essa Issue!(nada impede que alguem pegue antes também :D)

Renan Montenegro

unread,
Aug 12, 2014, 10:11:08 AM8/12/14
to caelum-...@googlegroups.com
Nunca usei o Brutauth, de qualquer forma farei uns testes e posso tentar fazer isso. :-)

Fabio Ebner

unread,
Aug 12, 2014, 2:57:55 PM8/12/14
to Vraptor
So uma duvida estou testando aqui, e eu so posso passar um long? estava vendo que se eu criar uma custom eu posso receber parametros, podem tem que ser os mesmos parametros que o metodo a ser verificado recebe ne?? 

como eu faco para passar tipo uma role que eu quero .. nesse metodo precisa ser ADM ou etc?

obrigado

Leonardo Wolter

unread,
Aug 12, 2014, 3:00:28 PM8/12/14
to caelum-...@googlegroups.com
Fabio, as Rules são components, você pode receber injetado como você receberia em qualquer outro lugar, isso resolve?

Fabio Ebner

unread,
Aug 12, 2014, 3:29:56 PM8/12/14
to Vraptor
Leonardo, eu so quero saber como eu passo um parametro para a minha rule, eu vi que quando e uma Simple rule, eu posso passar um long via @AccessLevel queria algo do tipo 

@Rule({"admin","outraqualquer"})

Leonardo Wolter

unread,
Aug 12, 2014, 3:34:07 PM8/12/14
to caelum-...@googlegroups.com
Entendi, isso não é suportado. No brutauth, a ideia é que você não tenha roles(strings), e sim classes.

Ou seja, nesse caso você teria uma AdminRule.class e uma OutraQualquerRule.class e anotaria seu metodo com
@CustomBrutauthRules({AdminRule.class, OutraQualquerRule.class})

Fabio Ebner

unread,
Aug 12, 2014, 3:37:46 PM8/12/14
to Vraptor
A ideia do brutauth seria de acesso por classe?  independende da Role, eu tem acesso a essa classe ou nao?

O vratpro shiro nao esta mais na pagina de plugin, vou ver se aquele outro auth me antende entao

obrigado

Renan Montenegro

unread,
Aug 12, 2014, 3:44:33 PM8/12/14
to caelum-...@googlegroups.com
Fábio, o VRaptor Shiro foi retirado por conta de algum bug, não lembro exatamente o que era...

Leonardo Wolter

unread,
Aug 12, 2014, 3:44:39 PM8/12/14
to caelum-...@googlegroups.com
A ideia do brutauth é criar classes(rules) que decidem se o usuário tem ou não acesso a determinada action ou controller, não ficando preso apenas ao uso de strings :)

Chico Sokol

unread,
Aug 12, 2014, 3:56:49 PM8/12/14
to caelum-vraptor
Fabio, o brutauth é bem flexível, dá pra você implementar o que você quer fazendo algo parecido com isso: https://gist.github.com/csokol/b891ee27c0d627795279

Sacou a ideia?






--
Chico Sokol

Fabio Ebner

unread,
Aug 12, 2014, 3:59:55 PM8/12/14
to Vraptor
Leonardo, mas então como eu faria para saber o que ele esta tentando acessar para decidir se ele tem permissao ou nao? por exemplo eu tenho uma classe que possui varios metodos, sendo que alguns podem ser acessado publicamente e outros precisam de uma permissao especial. tem como eu passar pelo menos a URL que eu esou tentando acessar ou algo assim

?

Fabio Ebner

unread,
Aug 12, 2014, 4:02:33 PM8/12/14
to Vraptor
Chico.. entendi.. 

vou testar aqui.. obrigado

Leonardo Wolter

unread,
Aug 12, 2014, 4:07:55 PM8/12/14
to caelum-...@googlegroups.com
Você pode usar a solução do chico pra adaptar e usar roles.

A ideia é que a sua rule não precisa saber qual é a url em que ela está sendo usada. Por exemplo, você pode ter uma rule chamada AdminRule que verifica se o user ta logado:

class AdminRule implements CustomBrutauthRule{
    @Inject private User user;

    public void isAllowed(){
        return user.isAdmin();
    }
}

Depois disso é só anotar as urls que são limitados a admins com @CustomBrutauthRules(AdminRule.class) e o framework vai fazer o resto pra você(se a rule retornar false não vai deixar acessar a página, se retornar true deixa acessar normalmente)

Fabio Ebner

unread,
Aug 12, 2014, 4:15:26 PM8/12/14
to Vraptor
Entendi.. eu falei da URL pq pensei em fazer uma restricao com relacao aos servicos( sendo que eu deixaria liberado para um usuario com acesso de master, fazer liberar ou bloquear outros usuarios) mas enfim.. isso que o chico passou acredito que ja resolve o meu problema.

So mais uma coisa, tem como eu manter o usuario logado no vraptor?? por exemplo esse @Inject private User user, como eu faco para menter ele para uma sessao?

obrigado

Chico Sokol

unread,
Aug 12, 2014, 8:45:44 PM8/12/14
to caelum-vraptor
Se vc anotar a classe User com @SessionScoped, ele vai ficar na sessão (se for uma classe de modelo, talvez faça mais sentido criar uma classe UserSession por exemplo e anotar ela com @SessionScoped).



--
Chico Sokol

Rodrigo Turini

unread,
Aug 13, 2014, 7:00:37 AM8/13/14
to caelum-...@googlegroups.com
Oi Fábio, você pode ver um exemplo disso no vraptor-musicjungle:
https://github.com/caelum/vraptor4/tree/master/vraptor-musicjungle
De uma olhada na classe UserInfo (que é session scoped). um abraço 

Sent from my iPhone

José Fernando B. C.

unread,
Aug 13, 2014, 7:23:04 AM8/13/14
to caelum-...@googlegroups.com
Fala Fábio, eu usei este exemplo passado pelo Rodrigo para testar e funcionou perfeitamente, segue o exemplo, espero que ajude.

public class LoggedHandler implements RuleHandler {

   
@Inject
   
private Result result;

   
@Override
   
public void handle() {
        result
.redirectTo(UsuariosController.class).loginForm();
   
}
}

@HandledBy(LoggedHandler.class)
public class LoginRule implements CustomBrutauthRule{

   
@Inject    
   
private Sessao sessao;

   
public boolean isAllowed() {
       
return sessao.estaLogado();
   
}
}

@SessionScoped
public class Sessao implements Serializable{
   
   
private static final long serialVersionUID = 1L;

   
private Usuario usuario;

   
@Inject
   
private UsuarioService usuarioSerice;
   
   
public void loga(Usuario usuario) {
       
this.usuario = usuarioSerice.existe(usuario);
   
}
   
   
public void logout(){
       
this.usuario = null;
   
}
   
   
public boolean estaLogado() {
       
return this.usuario != null;
   
}
}

@Controller
public class UsuariosController {
 
.....
   
@CustomBrutauthRules(LoginRule.class)
   
public List<Usuario> lista() {
       
return this.usuarioRepository.findAll();
   
}

   
@CustomBrutauthRules(LoginRule.class)
   
public void edita(int id) {
       
Usuario usuarioEncontrado = usuarioRepository.findId(Usuario.class, id);
       
if (usuarioEncontrado == null) {
           
this.result.notFound();
       
} else {
           
this.result.include(usuarioEncontrado);

           
this.result.of(this).formulario();
       
}
   
}
}


Espero que ajude!

Leonardo Wolter

unread,
Aug 13, 2014, 9:09:24 AM8/13/14
to caelum-...@googlegroups.com
Só lembrando que se todos os métodos do controller precisam obedecer uma Rule, você pode anotar o controller com @CustomBrutauthRules direto, em vez de anotar todos os métodos :)

Fabio Ebner

unread,
Aug 13, 2014, 1:00:25 PM8/13/14
to Vraptor
Chico.. tentei utilizar o seu Gist e ficou da seguinte forma:

package br.com.lumera.portalservicosback.security;

import br.com.caelum.brutauth.auth.rules.SimpleBrutauthRule;
import br.com.caelum.vraptor.Controller;
import br.com.caelum.vraptor.core.MethodInfo;

@Controller
public class VerificarAcesso implements SimpleBrutauthRule {
private MethodInfo info;
 
public VerificarAcesso(MethodInfo info) {
this.info = info;
}
 
@Override
public boolean isAllowed(long accessLevel) {
System.out.println("ss");
return true;
}
 
}


e no meu controller
@SimpleBrutauthRules(VerificarAcesso.class)
@Get(value = {"/natureza/{nmNatureza}/{icCertidaoPositiva}", "/natureza/{nmNatureza}", "/natureza"})
public void getNatureza(String nmNatureza, Boolean icCertidaoPositiva){
..

porem quando chamo o metodo ele da o seguinte erro:

br.com.caelum.vraptor.InterceptionException: br.com.caelum.vraptor.InterceptionException: org.jboss.weld.exceptions.IllegalArgumentException: WELD-001456: Argument bean must not be null
	br.com.caelum.vraptor.interceptor.StepInvoker.invokeMethod(StepInvoker.java:68)
	br.com.caelum.vraptor.interceptor.StepInvoker.tryToInvoke(StepInvoker.java:54)
	br.com.caelum.vraptor.interceptor.StepInvoker$Proxy$_$$_WeldClientProxy.tryToInvoke(Unknown Source)
	br.com.caelum.vraptor.interceptor.InterceptorExecutor.executeAround(InterceptorExecutor.java:75)
	br.com.caelum.vraptor.interceptor.InterceptorExecutor$Proxy$_$$_WeldClientProxy.executeAround(Unknown Source)
	br.com.caelum.vraptor.interceptor.AspectStyleInterceptorHandler.execute(AspectStyleInterceptorHandler.java:87)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:83)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.start(DefaultInterceptorStack.java:93)
	br.com.caelum.vraptor.core.DefaultInterceptorStack$Proxy$_$$_WeldClientProxy.start(Unknown Source)
	br.com.caelum.vraptor.observer.RequestHandlerObserver.handle(RequestHandlerObserver.java:86)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	java.lang.reflect.Method.invoke(Unknown Source)
	org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:93)
	org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:266)
	org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:253)
	org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:232)
	org.jboss.weld.event.ObserverNotifier.notifyObserver(ObserverNotifier.java:169)
	org.jboss.weld.event.ObserverNotifier.notifyObserver(ObserverNotifier.java:165)
	org.jboss.weld.event.ObserverNotifier.notifyObservers(ObserverNotifier.java:119)
	org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:112)
	org.jboss.weld.event.EventImpl.fire(EventImpl.java:83)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:116)

root cause

br.com.caelum.vraptor.InterceptionException: org.jboss.weld.exceptions.IllegalArgumentException: WELD-001456: Argument bean must not be null
	br.com.caelum.vraptor.interceptor.StepInvoker.invokeMethod(StepInvoker.java:68)
	br.com.caelum.vraptor.interceptor.StepInvoker.tryToInvoke(StepInvoker.java:54)
	br.com.caelum.vraptor.interceptor.StepInvoker$Proxy$_$$_WeldClientProxy.tryToInvoke(Unknown Source)
	br.com.caelum.vraptor.interceptor.InterceptorExecutor.executeAround(InterceptorExecutor.java:75)
	br.com.caelum.vraptor.interceptor.InterceptorExecutor$Proxy$_$$_WeldClientProxy.executeAround(Unknown Source)
	br.com.caelum.vraptor.interceptor.AspectStyleInterceptorHandler.execute(AspectStyleInterceptorHandler.java:87)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:83)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:60)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:83)
	br.com.caelum.vraptor.core.DefaultInterceptorStack$Proxy$_$$_WeldClientProxy.next(Unknown Source)
	br.com.caelum.vraptor.interceptor.DefaultSimpleInterceptorStack.next(DefaultSimpleInterceptorStack.java:49)
	br.com.caelum.vraptor.interceptor.DefaultSimpleInterceptorStack$Proxy$_$$_WeldClientProxy.next(Unknown Source)
	br.com.caelum.vraptor.interceptor.InterceptorExecutor.executeAround(InterceptorExecutor.java:77)
	br.com.caelum.vraptor.interceptor.InterceptorExecutor$Proxy$_$$_WeldClientProxy.executeAround(Unknown Source)
	br.com.caelum.vraptor.interceptor.AspectStyleInterceptorHandler.execute(AspectStyleInterceptorHandler.java:87)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:83)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:98)
	br.com.caelum.vraptor.interceptor.FlashInterceptor$Proxy$_$$_WeldClientProxy.intercept(Unknown Source)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:58)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:83)
	br.com.caelum.vraptor.core.DefaultInterceptorStack$Proxy$_$$_WeldClientProxy.next(Unknown Source)
	br.com.caelum.vraptor.interceptor.DefaultSimpleInterceptorStack.next(DefaultSimpleInterceptorStack.java:49)
	br.com.caelum.vraptor.interceptor.DefaultSimpleInterceptorStack$Proxy$_$$_WeldClientProxy.next(Unknown Source)
	br.com.caelum.vraptor.simplemail.AsyncMailerFlushInterceptor.intercept(AsyncMailerFlushInterceptor.java:33)
	br.com.caelum.vraptor.simplemail.AsyncMailerFlushInterceptor$Proxy$_$$_WeldClientProxy.intercept(Unknown Source)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	java.lang.reflect.Method.invoke(Unknown Source)
	net.vidageek.mirror.provider.java.PureJavaMethodReflectionProvider.invoke(PureJavaMethodReflectionProvider.java:38)
	net.vidageek.mirror.invoke.MethodHandlerByMethod.withArgs(MethodHandlerByMethod.java:54)
	br.com.caelum.vraptor.interceptor.StepInvoker.invokeMethod(StepInvoker.java:63)
	br.com.caelum.vraptor.interceptor.StepInvoker.tryToInvoke(StepInvoker.java:54)
	br.com.caelum.vraptor.interceptor.StepInvoker$Proxy$_$$_WeldClientProxy.tryToInvoke(Unknown Source)
	br.com.caelum.vraptor.interceptor.InterceptorExecutor.executeAround(InterceptorExecutor.java:75)
	br.com.caelum.vraptor.interceptor.InterceptorExecutor$Proxy$_$$_WeldClientProxy.executeAround(Unknown Source)
	br.com.caelum.vraptor.interceptor.AspectStyleInterceptorHandler.execute(AspectStyleInterceptorHandler.java:87)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:83)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.start(DefaultInterceptorStack.java:93)
	br.com.caelum.vraptor.core.DefaultInterceptorStack$Proxy$_$$_WeldClientProxy.start(Unknown Source)
	br.com.caelum.vraptor.observer.RequestHandlerObserver.handle(RequestHandlerObserver.java:86)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	java.lang.reflect.Method.invoke(Unknown Source)
	org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:93)
	org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:266)
	org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:253)
	org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:232)
	org.jboss.weld.event.ObserverNotifier.notifyObserver(ObserverNotifier.java:169)
	org.jboss.weld.event.ObserverNotifier.notifyObserver(ObserverNotifier.java:165)
	org.jboss.weld.event.ObserverNotifier.notifyObservers(ObserverNotifier.java:119)
	org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:112)
	org.jboss.weld.event.EventImpl.fire(EventImpl.java:83)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:116)

root cause

org.jboss.weld.exceptions.IllegalArgumentException: WELD-001456: Argument bean must not be null
	org.jboss.weld.util.Preconditions.checkArgumentNotNull(Preconditions.java:40)
	org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:747)
	org.jboss.weld.util.ForwardingBeanManager.getReference(ForwardingBeanManager.java:61)
	org.jboss.weld.bean.builtin.BeanManagerProxy.getReference(BeanManagerProxy.java:80)
	br.com.caelum.vraptor.ioc.cdi.CDIBasedContainer.instanceFor(CDIBasedContainer.java:59)
	br.com.caelum.vraptor.ioc.cdi.CDIBasedContainer$Proxy$_$$_WeldClientProxy.instanceFor(Unknown Source)
	br.com.caelum.brutauth.verifier.SimpleBrutauthRulesVerifier.rulesAllows(SimpleBrutauthRulesVerifier.java:47)
	br.com.caelum.brutauth.verifier.SimpleBrutauthRulesVerifier.rulesOfTypeAllows(SimpleBrutauthRulesVerifier.java:39)
	br.com.caelum.brutauth.interceptors.SimpleBrutauthRuleInterceptor.intercept(SimpleBrutauthRuleInterceptor.java:37)
	br.com.caelum.brutauth.interceptors.SimpleBrutauthRuleInterceptor$Proxy$_$$_WeldClientProxy.intercept(Unknown Source)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:58)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:83)
	br.com.caelum.vraptor.core.DefaultInterceptorStack$Proxy$_$$_WeldClientProxy.next(Unknown Source)
	br.com.caelum.vraptor.interceptor.DefaultSimpleInterceptorStack.next(DefaultSimpleInterceptorStack.java:49)
	br.com.caelum.vraptor.interceptor.DefaultSimpleInterceptorStack$Proxy$_$$_WeldClientProxy.next(Unknown Source)
	br.com.caelum.vraptor.hibernate.HibernateTransactionInterceptor.intercept(HibernateTransactionInterceptor.java:66)
	br.com.caelum.vraptor.hibernate.HibernateTransactionInterceptor$Proxy$_$$_WeldClientProxy.intercept(Unknown Source)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	java.lang.reflect.Method.invoke(Unknown Source)
	net.vidageek.mirror.provider.java.PureJavaMethodReflectionProvider.invoke(PureJavaMethodReflectionProvider.java:38)
	net.vidageek.mirror.invoke.MethodHandlerByMethod.withArgs(MethodHandlerByMethod.java:54)
	br.com.caelum.vraptor.interceptor.StepInvoker.invokeMethod(StepInvoker.java:63)
	br.com.caelum.vraptor.interceptor.StepInvoker.tryToInvoke(StepInvoker.java:54)
	br.com.caelum.vraptor.interceptor.StepInvoker$Proxy$_$$_WeldClientProxy.tryToInvoke(Unknown Source)
	br.com.caelum.vraptor.interceptor.InterceptorExecutor.executeAround(InterceptorExecutor.java:75)
	br.com.caelum.vraptor.interceptor.InterceptorExecutor$Proxy$_$$_WeldClientProxy.executeAround(Unknown Source)
	br.com.caelum.vraptor.interceptor.AspectStyleInterceptorHandler.execute(AspectStyleInterceptorHandler.java:87)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:83)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:60)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:83)
	br.com.caelum.vraptor.core.DefaultInterceptorStack$Proxy$_$$_WeldClientProxy.next(Unknown Source)
	br.com.caelum.vraptor.interceptor.DefaultSimpleInterceptorStack.next(DefaultSimpleInterceptorStack.java:49)
	br.com.caelum.vraptor.interceptor.DefaultSimpleInterceptorStack$Proxy$_$$_WeldClientProxy.next(Unknown Source)
	br.com.caelum.vraptor.interceptor.InterceptorExecutor.executeAround(InterceptorExecutor.java:77)
	br.com.caelum.vraptor.interceptor.InterceptorExecutor$Proxy$_$$_WeldClientProxy.executeAround(Unknown Source)
	br.com.caelum.vraptor.interceptor.AspectStyleInterceptorHandler.execute(AspectStyleInterceptorHandler.java:87)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:83)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:98)
	br.com.caelum.vraptor.interceptor.FlashInterceptor$Proxy$_$$_WeldClientProxy.intercept(Unknown Source)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:58)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:83)
	br.com.caelum.vraptor.core.DefaultInterceptorStack$Proxy$_$$_WeldClientProxy.next(Unknown Source)
	br.com.caelum.vraptor.interceptor.DefaultSimpleInterceptorStack.next(DefaultSimpleInterceptorStack.java:49)
	br.com.caelum.vraptor.interceptor.DefaultSimpleInterceptorStack$Proxy$_$$_WeldClientProxy.next(Unknown Source)
	br.com.caelum.vraptor.simplemail.AsyncMailerFlushInterceptor.intercept(AsyncMailerFlushInterceptor.java:33)
	br.com.caelum.vraptor.simplemail.AsyncMailerFlushInterceptor$Proxy$_$$_WeldClientProxy.intercept(Unknown Source)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	java.lang.reflect.Method.invoke(Unknown Source)
	net.vidageek.mirror.provider.java.PureJavaMethodReflectionProvider.invoke(PureJavaMethodReflectionProvider.java:38)
	net.vidageek.mirror.invoke.MethodHandlerByMethod.withArgs(MethodHandlerByMethod.java:54)
	br.com.caelum.vraptor.interceptor.StepInvoker.invokeMethod(StepInvoker.java:63)
	br.com.caelum.vraptor.interceptor.StepInvoker.tryToInvoke(StepInvoker.java:54)
	br.com.caelum.vraptor.interceptor.StepInvoker$Proxy$_$$_WeldClientProxy.tryToInvoke(Unknown Source)
	br.com.caelum.vraptor.interceptor.InterceptorExecutor.executeAround(InterceptorExecutor.java:75)
	br.com.caelum.vraptor.interceptor.InterceptorExecutor$Proxy$_$$_WeldClientProxy.executeAround(Unknown Source)
	br.com.caelum.vraptor.interceptor.AspectStyleInterceptorHandler.execute(AspectStyleInterceptorHandler.java:87)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:83)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.start(DefaultInterceptorStack.java:93)
	br.com.caelum.vraptor.core.DefaultInterceptorStack$Proxy$_$$_WeldClientProxy.start(Unknown Source)
	br.com.caelum.vraptor.observer.RequestHandlerObserver.handle(RequestHandlerObserver.java:86)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	java.lang.reflect.Method.invoke(Unknown Source)
	org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:93)
	org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:266)
	org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:253)
	org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:232)
	org.jboss.weld.event.ObserverNotifier.notifyObserver(ObserverNotifier.java:169)
	org.jboss.weld.event.ObserverNotifier.notifyObserver(ObserverNotifier.java:165)
	org.jboss.weld.event.ObserverNotifier.notifyObservers(ObserverNotifier.java:119)
	org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:112)
	org.jboss.weld.event.EventImpl.fire(EventImpl.java:83)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:116)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.42 logs.


Apache Tomcat/7.0.42

Chico Sokol

unread,
Aug 13, 2014, 2:31:12 PM8/13/14
to caelum-vraptor
Opa, sua rule não precisa ser um @Controller, além disso precisa do @Inject, já que vc está usando vraptor4. Algo do tipo:

//remove o @Controller
public class VerificarAcesso implements SimpleBrutauthRule {
@Inject private MethodInfo info;
 
@Override
public boolean isAllowed(long accessLevel) {
System.out.println("ss");
return true;
}
 
}



--
Chico Sokol

Fabio Ebner

unread,
Aug 13, 2014, 2:41:20 PM8/13/14
to Vraptor
Isso.. foi o que eu precisei fazer :D pois via constructor estava dando problemas. so estou com problemas na hora de recuperar a annotation ele retorna null
coloquei assim no metoddo:

Permissoes per = info.getControllerMethod().getMethod().getAnnotation(Permissoes.class);

a minha annotations esta simples:
public @interface Permissoes {
String[] permissoes();
}


e no meu controller: 
@Permissoes(permissoes = {"ADM","SUPERADM"})
@SimpleBrutauthRules(VerificarAcesso.class)
@Get(value = {"/natureza/{nmNatureza}/{icCertidaoPositiva}", "/natureza/{nmNatureza}", "/natureza"})
public void getNatureza(String nmNatureza, Boolean icCertidaoPositiva){

Chico Sokol

unread,
Aug 13, 2014, 2:49:13 PM8/13/14
to caelum-vraptor
Vou fazer um teste aqui e ver o que rola.



--
Chico Sokol

Fabio Ebner

unread,
Aug 13, 2014, 2:54:46 PM8/13/14
to Vraptor
Consegui.. 

@Retention(RetentionPolicy.RUNTIME)
public @interface Permissoes {
String[] value() default "NONE";
}

Chico Sokol

unread,
Aug 13, 2014, 2:59:44 PM8/13/14
to caelum-vraptor
Ah, boa tinha faltado o @Retention, sempre esqueço tbm :D



--
Chico Sokol

tiago.javaman

unread,
Apr 2, 2016, 1:25:02 PM4/2/16
to caelum-vraptor
Pessoal, recuperando esse tópico antigo.

 O Francisco citou que daria pra fazer algo nesse sentido https://gist.github.com/csokol/b891ee27c0d627795279 pra pegar os valores da anotação do método por String e não Long.

Agora no vraptor 4, não existe mais o MethodInfo.getResourceMethod()

tiago.javaman

unread,
Apr 2, 2016, 1:27:39 PM4/2/16
to caelum-vraptor
o .getValuedParameters()  está me trazendo os values da anotação @Get apenas.

Rodrigo Turini

unread,
Apr 2, 2016, 11:57:37 PM4/2/16
to caelum-vraptor
Oi Thiago,

No lugar de MethodInfo.getResourceMethod(), você pode injetar o ControllerMethod no VRaptor 4.

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/caelum-vraptor.
Para mais opções, acesse https://groups.google.com/d/optout.

tiago.javaman

unread,
Apr 12, 2016, 10:30:19 PM4/12/16
to caelum-vraptor, rodrigo...@caelum.com.br
Obrigado Rodrigo!
Reply all
Reply to author
Forward
0 new messages