SACI - Simple Access Controller (VRaptor 3)

Hail.

Após ter começado com essa brincadeira há mais de um ano, volto aqui para dar notícias sobre o projeto.

Durante esse período muita gente me procurou pedindo ajuda, alterações e mandando sugestões sobre a parada.

O lance é que o tópico aqui no GUJ tinha virado uma bagunça, então resolvi atualizar tudo e centralizar num canto.

Pois bem: o projeto agora se chama SACI, está no GitHub, possui "documentação e é nóis que voa, bruxão…

Está mais simples e mais funcional.

Estou preparando um projeto exemplo, logo logo posto a parada.

Continuem mandando dúvidas, sugestões e reclamações. Mas agora podem dar um fork tbm e participar da parada! hehe

Abç

“é nóis que voa, bruxão” … Great Young …

Valeu Bronks (rsrsrsrsr), digo Bronx.

t+

Ótima novidade, já coloquei no favoritos!
Obrigado.

Bronx,

Importei o projeto mas tá reclamando em duas classes no pacote br.com.bronx.vraptor.saci.restriction
RestrictionValidator linha 93

List<Restriction> resourceRestrictionsList = methodRestrictions.getRestrictions(); // erro de conversão

linha 108

List<Restriction> resourceRestrictionsList = resourceRestrictions.getRestrictions(); // erro de conversão

classe Restrictor
linha 55

Restriction loggedInRestriction = new LoggedInRestriction(); //tipos incompativeis

E ae Wagnão!

Está dando uma exception quando vc usa?
Se sim, posta o stacktrace para vermos os detalhes…

o eclipse reclama e não deixa executar.

Puts… Vc removeu o jar da versão antiga?
Se a resposta for não, remova-o e dê um “clean” no projeto…

Alguém mais está tendo problemas?
Aliás, alguém conseguiu usar sem problemas? rs

rola virar um submodulo do VRaptor-contrib?


abraços

Só depois que disserem se está ou não funcionando…=P

Boa tarde galera do guj,
utilizando o framework do bronx SACI estou tendo um erro http 405 no metodo autenticar da minha LoginController

segue o código


	
	@Post("/authenticar")
	public void authentication(TesteUsuario usuario){
		
		result.include("error",
				"Usuário não cadastrado. \nCadastre-se e tente novamente.");
		result.redirectTo(HomeController.class).index();
		
	}

alguem pode me ajudar.

vc deve estar fazendo um form sem o method="post"
405 significa http method errado

de fato estava mesmo sem o “post”.

Boa tarde a todos ,
sei que o post é velho mas estou utilizando o SACI e tive um pequeno problema ao implementar.
Fiz essa classe como esta no tutorial para testar o acesso.
Uma coisa interessante é que mesmo setando o email ele fica nulo nessa classe, se eu colocar um constructor e passar no parametro dele da um erro.
Poderia me ajudar como eu posso alterar o valor do email nesta classe?

@Component
public class Perfil implements Profile{

	private String email;

	
	
	
	@Override
	public boolean isLoggedIn() {
		if(email != null)
			return true;
		else return false;
	}

	@Override
	public List<String> getRoles() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public int getAccessLevel() {
		// TODO Auto-generated method stub
		return 0;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

}

qual erro dah?

17:32:55,967 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/escolam].[default]] (http--0.0.0.0-80-1) Servlet.service() for servlet default threw exception: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'accessController': Unsatisfied dependency expressed through constructor argument with index 3 of type [br.com.aquila.escolam.filter.Perfil]: : Error creating bean with name 'perfil': Unsatisfied dependency expressed through constructor argument with index 1 of type [java.lang.String]: : No matching bean of type [java.lang.String] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [java.lang.String] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'perfil': Unsatisfied dependency expressed through constructor argument with index 1 of type [java.lang.String]: : No matching bean of type [java.lang.String] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [java.lang.String] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:730) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:196) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1003) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:907) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:329) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43) [org.springframework.web-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:325) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:263) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1083) [org.springframework.context-3.0.5.RELEASE.jar:3.0.5.RELEASE] at br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:86) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:46) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58) [vraptor-3.4.1.jar:] at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88) [vraptor-3.4.1.jar:] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:] at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:] at java.lang.Thread.run(Unknown Source) [rt.jar:1.6.0_29] Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'perfil': Unsatisfied dependency expressed through constructor argument with index 1 of type [java.lang.String]: : No matching bean of type [java.lang.String] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [java.lang.String] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:730) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:196) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1003) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:907) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:329) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43) [org.springframework.web-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:325) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:844) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:786) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:795) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:723) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] ... 41 more Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [java.lang.String] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:920) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:789) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:795) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:723) [org.springframework.beans-3.0.5.RELEASE.jar:3.0.5.RELEASE] ... 55 more

eh… nao dá pra receber pelo construtor pq o vraptor pensa que vc tah injetando dependências…

não funciona se vc deixar esse cara como @SessionScoped e setar o email em algum controller?

De fato funcionou mesmo muito obrigado.

Senhores, alguem me ajuda em um probleminha aq,
estou usando o saci, quando vou colocar o contextParam dentro do web.xml, ele não reconhece o: br.com.bronx.vraptor.saci

só funciona quando eu coloco: net.diegomaia.vraptor.saci

e quando eu exporto, e vou colocar o arquivo.war no servidor, ele dá erro dizendo que o webxml está incorreto!

o que eu tenho q fazer pra funcionar com o br.com.bronx.vraptor.saci
?

segue abaixo meu web.xml:

[code]<?xml version="1.0" encoding="UTF-8"?>

OsTiControl

index.html
index.htm
index.jsp
default.html
default.htm
default.jsp

<context-param>
	<param-name>br.com.caelum.vraptor.packages</param-name>
	<param-value>br.com.bronx.vraptor.saci</param-value>
</context-param>
<filter>
	<filter-name>vraptor</filter-name>
	<filter-class>br.com.caelum.vraptor.VRaptor</filter-class>
</filter>

<filter-mapping>
	<filter-name>vraptor</filter-name>
	<url-pattern>/*</url-pattern>
	<dispatcher>FORWARD</dispatcher>
	<dispatcher>REQUEST</dispatcher>
</filter-mapping>

/web-app>
[/code]

ah… e da esse erro aqui no tomcat:

[quote]
21/02/2013 16:11:04 org.apache.catalina.startup.HostConfig deployWAR
SEVERE: Error deploying web application archive /etc/tomcat/webapps/OsTiControl.war
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [/OsTiControl]
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:904)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:977)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1655)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:679)[/quote]

Olá Ricardo.

Recentemente alterei o nome do pacote padrão.
Agora o parâmetro que deve utilizar é o net.diegomaia.vraptor.saci.

Preciso alterar a “documentação”…

Se quiser alterar os pacotes, você pode baixar o projeto no github e renomeá-los.

Abç