Olá pessoal,
Acabei de publicar no meu blog um post sobre segurança utilizando VRaptor 3 com Spring Security 3.
Para quem tiver interesse, segue o link:
http://dkist.me/blog/2010/09/spring-security/
[]´s
Daniel
Olá pessoal,
Acabei de publicar no meu blog um post sobre segurança utilizando VRaptor 3 com Spring Security 3.
Para quem tiver interesse, segue o link:
http://dkist.me/blog/2010/09/spring-security/
[]´s
Daniel
Muito bom!
só um detalhe:
<%
if(request.getParameter("error") != null){
if (request.getParameter("error").equals("invalido")){
%>
é a mesma coisa que:
<c:if test="${param.error eq 'invalido'}">
</c:if>
Bem lembrado.
Acabei de ajustar no post.
Vlww Lucas.
[]´s
Daniel
Boa Yorgan, to começando a usar o VRaptor agora, nossa… melhor framework
pessoal da Caelum, fez um trabalho excelente com ele
abração
Beleza Yorgan?
Segui a dica do seu tutorial, bem explicado pra poder usar com VRaptor, já consegui fazer o bicho rodar, só ficou uma dúvida na autenticação, lá na query vc colocou:
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="SELECT login as username, senha as password, 'true' as enable FROM usuario u WHERE login = ?"
authorities-by-username-query="SELECT u.login as username, r.nome as authority FROM usuario u, role r WHERE u.id_role = r.id_role AND login = ?"/>
Fiz a adaptação pro que eu tenho:
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="SELECT login as username, senha as password, 'true' as enable FROM usuario WHERE login = ?"
authorities-by-username-query="SELECT u.login as username, r.nome as authority FROM usuario u, role r WHERE u.role_id = r.id AND login = ?"/>
</authentication-provider>
Mas o retorno é este:
6:01:57,867 DEBUG [OgnlParametersProvider] Applying error with [invalido]
16:01:57,873 DEBUG [OgnlParametersProvider] cant find property for expression error ignoring
16:01:57,873 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for LoginController.login() as []
16:01:57,873 DEBUG [ParametersInstantiatorInterceptor] Parameter values for [DefaultResourceMethod: LoginController.loginLoginController.login()] are []
16:01:57,887 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExecuteMethodInterceptor
16:01:57,887 DEBUG [ExecuteMethodInterceptor] Invoking LoginController.login()
16:01:57,890 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor OutjectResult
16:01:57,894 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ForwardToDefaultViewInterceptor
16:01:57,894 DEBUG [ForwardToDefaultViewInterceptor] forwarding to the dafault page for this logic
16:01:57,901 DEBUG [DefaultPageResult ] forwarding to /WEB-INF/jsp/login/login.jsp
Pelo visto não está recebendo o usuário e senha do form, ou a query está errada, já que recebo a mensagem de usuário ou senha inválidos:
<form action="<c:url value="/j_spring_security_check"/>" method="POST">
<fieldset>
Usuário: <input type="text" name="j_username" />
Senha:<input type="password" name="j_password" />
<button type="submit">Enviar</button>
</fieldset>
</form>
A tabela Usuario possui, PK id_usuario, FK id_role, nome, login e senha, a tabela Role possui PK id_role e nome = ROLE_ADMIN.
Abraço!
Parece ser algum problema com a url de falha de autenticação.
authentication-failure-url="/login?error=invalido"
Descobri o problema, era o hash da senha:
<password-encoder hash="plaintext" />
Como eu inseri a senha manualmente no banco, ele estava tentando ler senha em md5.
Sugestão para acrescentar ao tutorial: 
Especificar que está usando senha encryptada sendo necessário anotação específica no atributo “senha” na Classe Usuario.
Tô vendo agora qual é essa anotação. Se alguém souber, agradeço de antemão. \o/
Abraço!
Eu estou tentando usar esse trem, mas estou tendo um problemão =//
ele roda blz, quando o controlle é nulo, mas se o controle tiver DI, ele da um problema de dizer que o construtor não é nulo.
Caused by: org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class br.com.simtecnologia.lavierie.controller.login.TesteController]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given
@Resource
public class TesteController {
public TesteController(UsuarioQuery query) {
this.query = query;
}
//...
@RolesAllowed("teste")
public void teste() {
}
@RolesAllowed("admin")
public void admin() {
}
Em resumo, invibializa todo o processo de usar, com vraptor…
se alguem tiver uma solução para isto por favor estou no aguardo.
Ahh, uma observação, o erro só ocorre quando o metodo é anotado com o @RolesAllowed()
Talvez seja algo da configuração do meu global-method-security…
pois ele não esta conseguindo fazer direito a intervenção…
<global-method-security pre-post-annotations="enabled" jsr250-annotations="enabled">
</global-method-security>
Eu estou tentando usar esse trem, mas estou tendo um problemão =//ele roda blz, quando o controlle é nulo, mas se o controle tiver DI, ele da um problema de dizer que o construtor não é nulo.
Caused by: org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class br.com.simtecnologia.lavierie.controller.login.TesteController]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given
@Resource public class TesteController { public TesteController(UsuarioQuery query) { this.query = query; } //... @RolesAllowed("teste") public void teste() { } @RolesAllowed("admin") public void admin() { }Em resumo, invibializa todo o processo de usar, com vraptor…
se alguem tiver uma solução para isto por favor estou no aguardo.
P/ mim ta parecendo que o problema é no seu UsuarioQuery utilizado no construtor.
Já tentou utilizar sem ele?
[]´s
Daniel
Descobri o problema, era o hash da senha:<password-encoder hash="plaintext" />Como eu inseri a senha manualmente no banco, ele estava tentando ler senha em md5.
Sugestão para acrescentar ao tutorial:
Especificar que está usando senha encryptada sendo necessário anotação específica no atributo “senha” na Classe Usuario.
Tô vendo agora qual é essa anotação. Se alguém souber, agradeço de antemão. \o/
Abraço!
Bem lembrado Guevara.
Já adicionei uma observação para utilizar plaintext caso não seja necessário encriptar e uma classe demonstrando como utilizar o MD5.
[]´s
Daniel
Eu estou tentando usar esse trem, mas estou tendo um problemão =//ele roda blz, quando o controlle é nulo, mas se o controle tiver DI, ele da um problema de dizer que o construtor não é nulo.
Caused by: org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class br.com.simtecnologia.lavierie.controller.login.TesteController]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given
@Resource public class TesteController { public TesteController(UsuarioQuery query) { this.query = query; } //... @RolesAllowed("teste") public void teste() { } @RolesAllowed("admin") public void admin() { }Em resumo, invibializa todo o processo de usar, com vraptor…
se alguem tiver uma solução para isto por favor estou no aguardo.
P/ mim ta parecendo que o problema é no seu UsuarioQuery utilizado no construtor.
Já tentou utilizar sem ele?[]´s
Daniel
Nop, não é o caso, funciona quando esta sem o Spring Security, além disso o erro acontece com a tentativa de injeção de qualquer componente, já tentei injetar componentes que tenho 100% de certeza q estariam ok, como o HttpServletRequest, entre outros, e nada funciona…
Como pedi segurança nos métodos, ele vai tentar proxyar a intancia, só que pelo visto, ele não consegue fazer isso, devido ao construror.
enfim, não sei se o lucas vai ter uma solução…
Agora não tenho como, mas à noite vou testar esse seu caso.
[]´s
Daniel
pior que é um problema no proxy, pq ele tenta proxyar, e só sabe fazendo usando o contrutor default pelo visto.
mas o “global-method-security” tem a opção, proxy-target-class, ja tentei colocar ela como “false” e o problema continua… =/
no pior dos casos dá pra trocar injeção por construtor para injeção por setter… só anotar os setters com @Autowired do spring
o Ruim é que não seria facilmente acoplado a um projeto ja existente… ter que mudar a forma de programar, ou de usar o framework vraptor pela limitação do Security é o que me deixa angustiado… se tiver que fazer isso a cada nova tecnologia que tentar adicionar fica dificil.
Minha ideia era usar o Security pra ajudar no processo, não pra dificultar, ter que mudar a implementação de cada um dos meus componentes só pra atender a isto é tenso…
Ainda por cima, sendo o caso de que na propria api, fala que tem a opção de não usar proxy, mas que aparentemente é ignorada.
estou aqui tentanfo fazer mais configurações, vendo se consigo configurar pelo AOP do spring, para não ter q mudar o projeto.
Queria saber de você lucas, como o vraptor faz, para induzir o spring a usar injeção pelo construtor.
Consegui resolver, não é da forma que eu gostaria, mas entendi melhor o problema, e consegui resolver
@Resource
public class TesteController {
private final UsuarioQuery query;
/**
* Used only by CGLIB/Reflection proxy.
* @deprecated instead use {@link #TesteController(UsuarioQuery)}
* or possibly {@link NullPointerException} will be throwed.
*/
@Deprecated
protected TesteController() {this(null);}
public TesteController(UsuarioQuery query) {
this.query = query;
}
@RolesAllowed("teste")
public void checkLogin(String login) {
if (query.isAlreadyExistsLogin(login))
System.out.println("uia já existe");
else
System.out.println("ta livre!!!");
}
@RolesAllowed("admin")
public void admin() {
}
}
assim vai ser possível para o proxy do security proxyar minha classe, guardar a referencia da classe real dentro dela e invocar o método quando a autorização der ok.
Pensei q isso poderia gerar NPE, mas já vi que não gera...
outra coisa é que quando se usa interface nos componentes (não da pra fazer isso com os @Resources) nem precisa do contrutor nulo, já que o security vai proxyar a interface.
putz, não sei dizer qual é a mágica… sei que a classe que seleciona quais componentes serão registrados é a ComponentScanner…
os componentes do VRaptor são registrados no VRaptorApplicationContext
numa das linhas dele tem isso:
AopConfigUtils.registerAspectJAnnotationAutoProxyCreatorIfNecessary(beanFactory);
Bom dia , caros amigos estou com um pequeno problema,
Consegui fazer o Spring Security Rodar, Funcionar buscando os usuarios e roles do banco.
Mas , no caso , preciso controlar o Acesso em nivel de metodo,
Tem algum modo de deixar esse trecho do codigo Dinamico?
Algo como recuperar as urls e acessos do banco?
Alguem implementou algo parecido ?
esta é a função da @RolesAllowed ?
obrigado.
Olá kardok!
O Controle é assim mesmo, só colocar lá no seu aplicationContext.xml:
<intercept-url pattern="/usuario/**" access="ROLE_ADMIN" />
<intercept-url pattern="/proprietario/**" access="ROLE_ADMIN" />
<intercept-url pattern="/imovel/**" access="ROLE_ADMIN" />
Ou vc pode restringir um método específico, por exemplo, a listagem de proprietários:
<intercept-url pattern="/proprietario/lista" access="ROLE_ADMIN" />
O asterisco vc libera todos os métodos dentro do controller proprietário, ou posso restringir por cada método, no exemplo acima restringi o lista().
Têm outras dicas no manual do Spring:
http://static.springsource.org/spring-security/site/reference.html
Tô quase implementando o insert de um usuário admin caso não exista, assim ao subir a aplicação, terei um usuário pronto para logar. =)
Outra coisa legal, é implementar o controle de usuários logados, mostrá-los numa lista lá na jsp. Depois vou ver isso.
Abraço!
Pesquisei no FAQ do SpringSecurity , [url]http://static.springsource.org/spring-security/site/faq.html#faq-dynamic-url-metadata[/url]
e verifiquei que para fazer o que quero preciso implementar um codigo desse tipo
Só que nao entendi como usar o trecho? ConfigAttribute ?
Alguem tem alguma ideia ou exemplo de implementaçao ?
public class FiltroSecurityMetadata implements FilterInvocationSecurityMetadataSource {
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.springframework.security.access.ConfigAttribute;
import org.springframework.security.web.FilterInvocation;
import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource;
public class MeuFiltroSecurityMetadata implements FilterInvocationSecurityMetadataSource {
public List<ConfigAttribute> getAttributes(Object object) {
FilterInvocation fi = (FilterInvocation) object;
String url = fi.getRequestUrl();
String httpMethod = fi.getRequest().getMethod();
List<ConfigAttribute> attributes = new ArrayList<ConfigAttribute>();
// Lookup your database (or other source) using this information and populate the
// list of attributes
return attributes;
}
public Collection<ConfigAttribute> getAllConfigAttributes() {
return null;
}
public boolean supports(Class<?> clazz) {
return FilterInvocation.class.isAssignableFrom(clazz);
}
}
}
Olá kardok!
O Controle é assim mesmo, só colocar lá no seu aplicationContext.xml:<intercept-url pattern="/usuario/**" access="ROLE_ADMIN" /> <intercept-url pattern="/proprietario/**" access="ROLE_ADMIN" /> <intercept-url pattern="/imovel/**" access="ROLE_ADMIN" />Ou vc pode restringir um método específico, por exemplo, a listagem de proprietários:
<intercept-url pattern="/proprietario/lista" access="ROLE_ADMIN" />O asterisco vc libera todos os métodos dentro do controller proprietário, ou posso restringir por cada método, no exemplo acima restringi o lista().
Têm outras dicas no manual do Spring:
http://static.springsource.org/spring-security/site/reference.html
Tô quase implementando o insert de um usuário admin caso não exista, assim ao subir a aplicação, terei um usuário pronto para logar. =)
Outra coisa legal, é implementar o controle de usuários logados, mostrá-los numa lista lá na jsp. Depois vou ver isso.
Abraço!
Então o que eu preciso é que essas intercep-url , fossem criadas a partir do meu Banco de dados.
uma tabela onde colocasse por exemplo duas colunas (pattern e access)
Caso queira mudar alguma configuraçao no acesso , seria feito somente no banco (tabela).
Eu implentei sim … E é com @rolled…
Estou lingando o pc e jaja posto como fiz
Obs.: esse texto foi digitado a uma distancia de 5 metros da minha TV, não estava conseguindo ler direito o que escrevia, então deve estar cheio de erros de português e etc...
o que existe de importante dentro do meu xml e' o seguinte:
applicationContext-security.xml so esta no XML as partes importantes...
alem disto, vou mostrar as implementacoes de DefaultAuthenticationProvider, e de DefaultLogoutSuccessHandler, o outro citado neste exemplo, nao vou mostrar o source, pois a minha implementacao, nada mais e' do que algo que lanca uma excecao quando invocado... o xml me exigiu colocar um user-service-ref e apenas por isto, ele existe no meu codigo...
o mais importante no meu exemplo e' o DefaultAuthenticationProvider, e' nele que eu decido se o cara tem ou nao credenciais para logar...
codigo fonte =>DefaultAuthenticationProvider
Entao, explicando o codigo de login,
1 - eu recupero minha factory de EntityManager, a partir de uma classe utilitaria, ComponentLookup, que fiz do vraptor, ela usa um truque, para manter o container, mesmo fora de uma thread do vraptor, a partir do container, e' possivel pegar componentes de dentro do vraptor. Obs.: a autenticacao e feita fora de qualquer scopo do spring, apenas objetos em application scopo estao disponivel, e este e' o caso de um EntityManagerFacotry.
2 - eu crio um entity manager para a tentativa de login
3 - Sempre que uma autenticacao e' feita, o spring envia um objeto Authentication (do tipo WebAuthenticationDetails) para o meu provider, no provider, eu recupero as informacoes de autenticacao: senha,login,ip,sessionid, etc, uso todas elas para guardar um historico de tentativas de login no banco (vc nao precisa fazer isso) ...
4 - Eu busco pelo usuario, no banco, atraves do login, apos isto, sigo alguns fluxos distingtos:
4.1 - caso nao encontre o usuario, um NoResultException e' lacada, neste caso eu a capturo e a transformo em uma UsernameNotFoundException, para que o spring entenda a excecao...
4.2 - caso encontre eu checo a senha, e neste caso:
4.2.1 - caso a senha falhe, eu lanco uma BadCredentialsException, para que o spring entenda o erro.
4.2.2 - caso a senha seja validada, eu prossigo com a autenticacao. Criando um objeto do tipo Authentication, ver item 5.
5 - Criando o objeto de autenticacao eu informo como principal o Usuario (para o bom funcionamento o objeto que fica no principal, quando invocado o seu toString() tem que resultar no login de acesso do usuario), no caso o meu objeto Usuario faz isto, a senha eu mantenho nula por motivos de seguranca.
6 - Recupero a lista de permissoes do usuario, essa lista contem os GrantAuthority, o toString() destes objetos tem que bater com o que sera usado no @RolledAllowed, ou seja, essa sao as permissoes usadas.
.........
Apos a autneticacao, o usuario logado pode ser recuperado de qualquer ponto do programa da seuinte forma:
Authentication autenticacao = SecurityContextHolder.getContext().getAuthentication();
Usuario usuarioLogado = (Usuario)autenticacao.getPrincipal();
Obs.: esse codigo acima, pode gerar uma excessao de NPE caso nao haja usuario logado, ou uma ClassCastEx caso o usuario logado nao seja do tipo Usuario.
.........
Outra observacao e' que seus objeto que tiverem a anotacao @RolledAllowed, vao ter que ter o contrutor default definido, e caso precisem de injecao de dependencia, vao ter que ter o segundo construtor com a anotacao @Autowired, para que o vraptor/spring saiba que e' para usar o construtor com argumentos, e injetar as dependencias neel, por exemplo...
package br.com.simtecnologia.lavierie.controller.teste;
import javax.annotation.security.RolesAllowed;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.simtecnologia.lavierie.business.persistence.queries.UsuarioQuery;
@Resource
public class TesteController {
private final UsuarioQuery query;
private final Result result;
@Autowired
public TesteController(UsuarioQuery query, Result result) {
this.query = query;
this.result = result;
}
/**
* Used only by CGLIB/Reflection proxy.
* @deprecated instead use {@link #TesteController(UsuarioQuery,Result)}
* or possibly {@link NullPointerException} will be throwed.
*/
@Deprecated
protected TesteController() {
this(null,null);
//as linhas abaixo so existem para garantir que caso o construtor
//errado seja invocado uma exececao seja lancada...
//assim apenas uma classe proxiada pode invocar este construtor...
//caso queira vc pode dispensar essas duas linhas abaixo.
if (getClass().equals(TesteController.class))
throw new UnsupportedOperationException();
}
public void form() {}
@Post
@RolesAllowed("teste")
public void checkLogin(String login) {
Authentication temp = SecurityContextHolder.getContext().getAuthentication();
Object teste = temp.getPrincipal();
result.include("livre", !query.isAlreadyExistsLogin(login));
result.include("login", login);
}
public void admin() { }
}
ao acessar o link /teste/form, um formulario e' carregado...
ao enviar os dados para o /teste/checkLogin (via post) o spring security intercepta, levando vc para uma pagina de login...
caso o login seja bem sucedido, e' checado se o usuario tem em seus GrantAuthority autorizacao para "teste" que foi o que declarei em @RolledAllowed, em caso negativo vc sera levado para erro 403 (acesso negado) em caso positivo, o processo sera retomado, o post sera concluindo, e a logica do controle sera executada.
Qualquer duvida vc fala ai
............
Ah quase que esqueco, o meu handler de logout e' assim
DefaultLogoutSuccessHandler voce nao precisa implementar isto, a nao ser, que como eu, queira manter um historico de login/logout do sistema...
Opa,
Vi essa sua explicação e estou passando pelo menos problema, eu estou fazendo exatamente como o Lavieri a dúvida é, não consigo pegar os dados do login no meu Provider customizado.
Como você está pegando essas informações? Não entendi muito bem o lance do controller… No teu form de login você manda para qual URL?
Abração
Bom tentei implementar o projeto mas não consegui, estou usando o V-Raptor VRaptor 3.1.1, Spring 3.0.3 e Spring Security 3.0.2, ao tentar acessar a URL ocorre este erro:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'br.com.caelum.vraptor.http.EncodingHandlerFactory': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'encodingHandlerFactory': Unsatisfied dependency expressed through constructor argument with index 0 of type [javax.servlet.ServletContext]: : No unique bean of type [javax.servlet.ServletContext] is defined: expected single matching bean but found 2: [javax.servlet.ServletContext, servletContext]; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [javax.servlet.ServletContext] is defined: expected single matching bean but found 2: [javax.servlet.ServletContext, servletContext]
org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:150)
org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:109)
org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1387)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:244)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:385)
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:375)
org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1069)
org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:221)
br.com.caelum.vraptor.ioc.spring.VRaptorApplicationContext.getBean(VRaptorApplicationContext.java:244)
br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:59)
br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
root cause
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'encodingHandlerFactory': Unsatisfied dependency expressed through constructor argument with index 0 of type [javax.servlet.ServletContext]: : No unique bean of type [javax.servlet.ServletContext] is defined: expected single matching bean but found 2: [javax.servlet.ServletContext, servletContext]; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [javax.servlet.ServletContext] is defined: expected single matching bean but found 2: [javax.servlet.ServletContext, servletContext]
org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:698)
org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:192)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:984)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:886)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:385)
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:375)
org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1069)
org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:221)
br.com.caelum.vraptor.ioc.spring.VRaptorApplicationContext.getBean(VRaptorApplicationContext.java:244)
br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:59)
br.com.caelum.vraptor.ioc.spring.ComponentFactoryBean.getObject(ComponentFactoryBean.java:42)
org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:143)
org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:109)
org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1387)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:244)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:385)
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:375)
org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1069)
org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:221)
br.com.caelum.vraptor.ioc.spring.VRaptorApplicationContext.getBean(VRaptorApplicationContext.java:244)
br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:59)
br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
root cause
org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [javax.servlet.ServletContext] is defined: expected single matching bean but found 2: [javax.servlet.ServletContext, servletContext]
org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:772)
org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:680)
org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:771)
org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:691)
org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:192)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:984)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:886)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:385)
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:375)
org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1069)
org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:221)
br.com.caelum.vraptor.ioc.spring.VRaptorApplicationContext.getBean(VRaptorApplicationContext.java:244)
br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:59)
br.com.caelum.vraptor.ioc.spring.ComponentFactoryBean.getObject(ComponentFactoryBean.java:42)
org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:143)
org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:109)
org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1387)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:244)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:385)
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:375)
org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1069)
org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:221)
br.com.caelum.vraptor.ioc.spring.VRaptorApplicationContext.getBean(VRaptorApplicationContext.java:244)
br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:59)
br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>BMWEB</display-name>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<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>
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd"
>
<http auto-config="true">
<form-login login-page="/" authentication-failure-url="/?error=invalido" default-target-url="/admin"/>
<intercept-url pattern="/admin/**" access="ROLE_ADMIN" />
</http>
<authentication-manager>
<authentication-provider>
<password-encoder hash="plaintext" />
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="SELECT email as username, senha as password, 'true' as enable FROM usuario WHERE email = ?"
authorities-by-username-query="SELECT u.email as username, r.nome as authority FROM usuario u, regra r WHERE u.regra_id = r.id AND email = ?"/>
</authentication-provider>
</authentication-manager>
<beans:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<beans:property name="url" value="jdbc:mysql://localhost/bmweb" />
<beans:property name="driverClassName" value="com.mysql.jdbc.Driver" />
<beans:property name="username" value="root" />
<beans:property name="password" value="root" />
</beans:bean>
</beans:beans>
atualize o VRaptor pra 3.2.0, esse bug já foi corrigido…
To pegando o mesmo err o !
está com a última versão do VRaptor?
NÃO ESTAVA;…
br.com.caelum.vraptor.view.ResultException: org.apache.jasper.JasperException: /WEB-INF/jsp/login/index.jsp(20,8) The end tag "</c:if" is unbalanced
br.com.caelum.vraptor.view.DefaultPageResult.forward(DefaultPageResult.java:69)
br.com.caelum.vraptor.extra.ForwardToDefaultViewInterceptor.intercept(ForwardToDefaultViewInterceptor.java:59)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:75)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:69)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:44)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
root cause
org.apache.jasper.JasperException: /WEB-INF/jsp/login/index.jsp(20,8) The end tag "</c:if" is unbalanced
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:132)
org.apache.jasper.compiler.Parser.checkUnbalancedEndTag(Parser.java:1554)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1419)
org.apache.jasper.compiler.Parser.parseBody(Parser.java:1630)
org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:974)
org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1242)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1418)
org.apache.jasper.compiler.Parser.parseBody(Parser.java:1630)
org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:974)
org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1242)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1418)
org.apache.jasper.compiler.Parser.parse(Parser.java:130)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:255)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:185)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:347)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:589)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
br.com.caelum.vraptor.core.DefaultStaticContentHandler.deferProcessingToContainer(DefaultStaticContentHandler.java:64)
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:80)
br.com.caelum.vraptor.view.DefaultPageResult.forward(DefaultPageResult.java:67)
br.com.caelum.vraptor.extra.ForwardToDefaultViewInterceptor.intercept(ForwardToDefaultViewInterceptor.java:59)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:75)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:69)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:44)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
<%--
Document : index
Created on : 19/11/2010, 23:15:49
Author : cristiano
--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<c:if test="${param.error eq 'invalido'}">
<c:out value="Usuário e/ou senha inválido(s)">
</c:if>
<form name="f" action="<c:url value="/j_spring_security_check"/>" method="POST">
<table>
<tr>
<td>
<c:out value="Usuário:"/>
</td>
<td>
<input type='text' name='j_username'/>
</td>
</tr>
<tr>
<td>
<c:out value="Usuário:"/>
</td>
<td>
<input type='password' name='j_password'>
</td>
</tr>
<tr>
<td colspan='2'>
<input name="submit" type="submit">
</td>
</tr>
<tr>
<td colspan='2'>
<input name="reset" type="reset">
</td>
</tr>
</table>
</form>
</body>
</html>
<c:out value="Usuário e/ou senha inválido(s)">
falta uma barra
<c:out value="Usuário e/ou senha inválido(s)"/>
qual é o motivo do <c:out>? ele não tá fazendo nada, além de deixar seu código maior 
Alguém ai que ta usando o Spring Security, fez algo relacionado a Usuário da seção ou usuário logado ? Não estou conseguindo pegar esse usuário e setar o ID dele no banco na hora de fazer um POST.
jr
Olá kardok!
O Controle é assim mesmo, só colocar lá no seu aplicationContext.xml:<intercept-url pattern="/usuario/**" access="ROLE_ADMIN" /> <intercept-url pattern="/proprietario/**" access="ROLE_ADMIN" /> <intercept-url pattern="/imovel/**" access="ROLE_ADMIN" />Ou vc pode restringir um método específico, por exemplo, a listagem de proprietários:
<intercept-url pattern="/proprietario/lista" access="ROLE_ADMIN" />O asterisco vc libera todos os métodos dentro do controller proprietário, ou posso restringir por cada método, no exemplo acima restringi o lista().
Têm outras dicas no manual do Spring:
http://static.springsource.org/spring-security/site/reference.html
Tô quase implementando o insert de um usuário admin caso não exista, assim ao subir a aplicação, terei um usuário pronto para logar. =)
Outra coisa legal, é implementar o controle de usuários logados, mostrá-los numa lista lá na jsp. Depois vou ver isso.
Abraço!Então o que eu preciso é que essas intercep-url , fossem criadas a partir do meu Banco de dados.
uma tabela onde colocasse por exemplo duas colunas (pattern e access)
Caso queira mudar alguma configuraçao no acesso , seria feito somente no banco (tabela).
Cara… Vc conseguiu? Eu estou com o mesmo problema