Problemas com Spring Security [RESOLVIDO]

7 respostas
N

Boa tarde…

Estou desenvolvendo uma aplicação utilizando o Spring Security e estou com o seguinte problema:
Quando eu clico na página de login mesmo o meu usuário e senha estando certos, o meu arquivo aplicationContext não está fazendo o redirecionamento para o pacote “comAutenticacao” como deveria fazer… Mesmo o usuário tendo as permissões necessárias.

Abaixo segue o meu código o applicatinContext:

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns="http://www.springframework.org/schema/security"
	xsi:schemaLocation="http://www.springframework.org/schema/beans            
						http://www.springframework.org/schema/beans/spring-beans-3.0.xsd            
						
				        http://www.springframework.org/schema/security
           				http://www.springframework.org/schema/security/spring-security-3.0.3.xsd">
                                            
                                      
    <http auto-config="true" access-denied-page="/login.xhtml">   
        <form-login login-page="/login.xhtml" authentication-failure-url="/login.xhtml?error=401"  />
        <logout logout-success-url="/login.xhtml" invalidate-session="true"/> 
    
        <intercept-url pattern="/" access="ROLE_DEFAULT" />
        <intercept-url pattern="/login*/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
        <intercept-url pattern="/js/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
        <intercept-url pattern="/css/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
        <intercept-url pattern="/img/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
       
        <intercept-url pattern="./comAutenticacao*/**" access="ROLE_ADMIN" />
    </http>
 
   
    <authentication-manager>
        <authentication-provider user-service-ref="digestUserDetailService">
        </authentication-provider>
    </authentication-manager>

	<!-- UserDetailService para autenticações DIGEST -->
    <beans:bean id="digestUserDetailService" class="com.rfmagni.tcc.springsecurity.seguranca.UserDetailServiceImpl"/>
    
</beans:beans>

Abaixo segue a minha classe UserDetailServiceImpl

@Service
@Transactional
public class UserDetailServiceImpl implements UserDetailsService {

    @Autowired
    private UsuarioDAO userDAO;
    private UsuarioBean user;

    public UserDetails loadUserByUsername(String username)
            throws UsernameNotFoundException, DataAccessException {

        if (username != null && !username.equals("")) {

            user = (UsuarioBean) userDAO.procurarUsuario(username);

            if (user == null) {
                throw new UsernameNotFoundException("Usuário não encontrado: " + username);
            }

            List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
            GrantedAuthorityImpl grantedAuthorityImpl = new GrantedAuthorityImpl("ROLE_DEFAULT");
            authorities.add(grantedAuthorityImpl);

            if (user.getPermissaoCollection() != null && !user.getPermissaoCollection().isEmpty()) {
                for (Permissao p : user.getPermissaoCollection()) {
                    GrantedAuthorityImpl grantedAuthorityTmp = new GrantedAuthorityImpl(p.getRoleDefinition());
                    authorities.add(grantedAuthorityTmp);
                }
            }

            UserDetails userDetails = new UserDetails(user.getPassword(), user.getUsername(), authorities);

            return userDetails;
        } else {
            throw new UsernameNotFoundException("Usuário não encontrado: " + username);
        }

    }
}

Alguém saberia me ajudar?

7 Respostas

P

Substitui assim…

Vê se funciona…

N

pqnoje:
Substitui assim…

Vê se funciona…

Já fiz um teste assim, não funciono

P

Tenta mudar o seu como se fosse o meu...

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sec="http://www.springframework.org/schema/security"
	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">

    <!-- data source -->
 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  <property name="url" value="jdbc:mysql://localhost:3306/spring_security" />
  <property name="username" value="root" />
  <property name="password" value="substitui_pela_sua_senha_aqui" />
 </bean>
 <sec:http auto-config="true" access-denied-page="/access/accessDenied.jsp">
  <sec:form-login login-page="/access/loginPage.jsp" authentication-failure-url="/access/loginPage.jsp?error=accessDenied" />
  <sec:intercept-url pattern="/funcionario/**" access="ROLE_FUNC,ROLE_GER" />
  <sec:intercept-url pattern="/gerente/**" access="ROLE_GER" />
  <sec:intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
 </sec:http>
 <sec:authentication-manager>
  <sec:authentication-provider>
   <sec:jdbc-user-service data-source-ref="dataSource"
            users-by-username-query="SELECT username, password, 'true' as enable FROM users WHERE username=?"
            authorities-by-username-query="SELECT username, authority FROM users WHERE username=?" />
  </sec:authentication-provider>
 </sec:authentication-manager>
</beans>

OBS: Não precisei criar nenhuma classe pra funcionar o SpringSecurity...
Se tiveres mais dúvidas, acesse este link: http://www.guj.com.br/java/241105-nivel-de-acesso-com-struts-2-resolvido
nesse post têm 2 links para 2 tutoriais diferentes, são muito bons e foi através desse post que eu aprendi...
No seu caso, você deve estar querendo que o login seja feito através de DB, então esse tuto é mais aconselhavel para você...
http://www.javasimples.com.br/spring-2/spring-secu...ando-sua-aplicacao-web-segura/

N
pqnoje:
Tenta mudar o seu como se fosse o meu...
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sec="http://www.springframework.org/schema/security"
	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">

    <!-- data source -->
 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  <property name="url" value="jdbc:mysql://localhost:3306/spring_security" />
  <property name="username" value="root" />
  <property name="password" value="substitui_pela_sua_senha_aqui" />
 </bean>
 <sec:http auto-config="true" access-denied-page="/access/accessDenied.jsp">
  <sec:form-login login-page="/access/loginPage.jsp" authentication-failure-url="/access/loginPage.jsp?error=accessDenied" />
  <sec:intercept-url pattern="/funcionario/**" access="ROLE_FUNC,ROLE_GER" />
  <sec:intercept-url pattern="/gerente/**" access="ROLE_GER" />
  <sec:intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
 </sec:http>
 <sec:authentication-manager>
  <sec:authentication-provider>
   <sec:jdbc-user-service data-source-ref="dataSource"
            users-by-username-query="SELECT username, password, 'true' as enable FROM users WHERE username=?"
            authorities-by-username-query="SELECT username, authority FROM users WHERE username=?" />
  </sec:authentication-provider>
 </sec:authentication-manager>
</beans>

OBS: Não precisei criar nenhuma classe pra funcionar o SpringSecurity...
Se tiveres mais dúvidas, acesse este link: http://www.guj.com.br/java/241105-nivel-de-acesso-com-struts-2-resolvido
nesse post têm 2 links para 2 tutoriais diferentes, são muito bons e foi através desse post que eu aprendi...
No seu caso, você deve estar querendo que o login seja feito através de DB, então esse tuto é mais aconselhavel para você...
http://www.javasimples.com.br/spring-2/spring-secu...ando-sua-aplicacao-web-segura/

Cara o primeiro link que você me mandou funcionou normalmente, o problema é que o segundo não está entrando...

Mas eu to precisando fazer uma classe que faça essa consulta, pois na minha aplicação eu to usando o JPA e hibernate ai fica meio ruim colocar o select e os dados referentes a conexão com o banco no applicationContext.

Mas a minha classe UserDetailServiceImpl ela ta funcionando e trazendo o usuário com as suas permissões, só que o problema, é o spring security não ta fazendo o redirecionamento para o pacote correto.

Caso alguem que puder me ajudar agradeço muito..

N
narutor99:
pqnoje:
Tenta mudar o seu como se fosse o meu...
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sec="http://www.springframework.org/schema/security"
	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">

    <!-- data source -->
 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  <property name="url" value="jdbc:mysql://localhost:3306/spring_security" />
  <property name="username" value="root" />
  <property name="password" value="substitui_pela_sua_senha_aqui" />
 </bean>
 <sec:http auto-config="true" access-denied-page="/access/accessDenied.jsp">
  <sec:form-login login-page="/access/loginPage.jsp" authentication-failure-url="/access/loginPage.jsp?error=accessDenied" />
  <sec:intercept-url pattern="/funcionario/**" access="ROLE_FUNC,ROLE_GER" />
  <sec:intercept-url pattern="/gerente/**" access="ROLE_GER" />
  <sec:intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
 </sec:http>
 <sec:authentication-manager>
  <sec:authentication-provider>
   <sec:jdbc-user-service data-source-ref="dataSource"
            users-by-username-query="SELECT username, password, 'true' as enable FROM users WHERE username=?"
            authorities-by-username-query="SELECT username, authority FROM users WHERE username=?" />
  </sec:authentication-provider>
 </sec:authentication-manager>
</beans>

OBS: Não precisei criar nenhuma classe pra funcionar o SpringSecurity...
Se tiveres mais dúvidas, acesse este link: http://www.guj.com.br/java/241105-nivel-de-acesso-com-struts-2-resolvido
nesse post têm 2 links para 2 tutoriais diferentes, são muito bons e foi através desse post que eu aprendi...
No seu caso, você deve estar querendo que o login seja feito através de DB, então esse tuto é mais aconselhavel para você...
http://www.javasimples.com.br/spring-2/spring-secu...ando-sua-aplicacao-web-segura/

Cara o primeiro link que você me mandou funcionou normalmente, o problema é que o segundo não está entrando...

Mas eu to precisando fazer uma classe que faça essa consulta, pois na minha aplicação eu to usando o JPA e hibernate ai fica meio ruim colocar o select e os dados referentes a conexão com o banco no applicationContext.

Mas a minha classe UserDetailServiceImpl ela ta funcionando e trazendo o usuário com as suas permissões, só que o problema, é o spring security não ta fazendo o redirecionamento para o pacote correto.

Caso alguem que puder me ajudar agradeço muito..

Pessoal o problema citado acima eu consegui resolver.....

N

Agora está dando outro problema…

Eu coloquei na minha página um controle de acesso em um button igual a tag abaixo.

<p:commandButton value="Salvar" actionListener="#{pessoaMBean.salvar}" update="mensagens" rendered="#{sec:ifAnyGranted('ROLE_ADMIN')}" />

Só que agora está dando o erro abaixo:

javax.faces.view.facelets.TagAttributeException: /comAutenticacao/cadastro/cadastroClientes.xhtml @23,158 rendered="#{sec:ifAnyGranted('ROLE_ADMIN')}" Function 'sec:ifAnyGranted' not found
	at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:401)
	at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:351)
	at com.sun.faces.facelets.tag.jsf.ComponentRule$ValueExpressionMetadata.applyMetadata(ComponentRule.java:107)
	at com.sun.faces.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:81)
	at javax.faces.view.facelets.MetaTagHandler.setAttributes(MetaTagHandler.java:129)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.setAttributes(DelegatingMetaTagHandler.java:102)
	at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.doNewComponentActions(ComponentTagHandlerDelegateImpl.java:398)
	at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:159)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
	at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
	at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:184)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
	at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
	at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:184)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
	at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
	at com.sun.faces.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:103)
	at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:178)
	at com.sun.faces.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:395)
	at com.sun.faces.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:366)
	at com.sun.faces.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:108)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
	at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:184)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
	at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
	at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:184)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
	at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
	at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
	at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
	at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86)
	at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:308)
	at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:367)
	at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:346)
	at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199)
	at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:155)
	at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
	at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86)
	at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:152)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:769)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
	at java.lang.Thread.run(Thread.java:722)
Caused by: javax.el.ELException: Function 'sec:ifAnyGranted' not found
	at com.sun.el.lang.ExpressionBuilder.visit(ExpressionBuilder.java:216)
	at com.sun.el.parser.SimpleNode.accept(SimpleNode.java:168)
	at com.sun.el.lang.ExpressionBuilder.prepare(ExpressionBuilder.java:181)
	at com.sun.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:192)
	at com.sun.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:235)
	at com.sun.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:92)
	at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:385)
	... 104 more

Eu tentei procurar no google de todas as maneiras, mas não consegui achar nada,
Alguém de vcs sabe como resolver isso??

N

narutor99:
Agora está dando outro problema…

Eu coloquei na minha página um controle de acesso em um button igual a tag abaixo.

<p:commandButton value="Salvar" actionListener="#{pessoaMBean.salvar}" update="mensagens" rendered="#{sec:ifAnyGranted('ROLE_ADMIN')}" />

Só que agora está dando o erro abaixo:

javax.faces.view.facelets.TagAttributeException: /comAutenticacao/cadastro/cadastroClientes.xhtml @23,158 rendered="#{sec:ifAnyGranted('ROLE_ADMIN')}" Function 'sec:ifAnyGranted' not found
	at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:401)
	at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:351)
	at com.sun.faces.facelets.tag.jsf.ComponentRule$ValueExpressionMetadata.applyMetadata(ComponentRule.java:107)
	at com.sun.faces.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:81)
	at javax.faces.view.facelets.MetaTagHandler.setAttributes(MetaTagHandler.java:129)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.setAttributes(DelegatingMetaTagHandler.java:102)
	at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.doNewComponentActions(ComponentTagHandlerDelegateImpl.java:398)
	at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:159)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
	at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
	at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:184)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
	at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
	at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:184)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
	at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
	at com.sun.faces.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:103)
	at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:178)
	at com.sun.faces.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:395)
	at com.sun.faces.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:366)
	at com.sun.faces.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:108)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
	at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:184)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
	at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
	at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:184)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
	at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
	at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
	at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
	at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86)
	at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:308)
	at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:367)
	at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:346)
	at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199)
	at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:155)
	at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
	at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86)
	at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:152)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:769)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
	at java.lang.Thread.run(Thread.java:722)
Caused by: javax.el.ELException: Function 'sec:ifAnyGranted' not found
	at com.sun.el.lang.ExpressionBuilder.visit(ExpressionBuilder.java:216)
	at com.sun.el.parser.SimpleNode.accept(SimpleNode.java:168)
	at com.sun.el.lang.ExpressionBuilder.prepare(ExpressionBuilder.java:181)
	at com.sun.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:192)
	at com.sun.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:235)
	at com.sun.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:92)
	at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:385)
	... 104 more

Eu tentei procurar no google de todas as maneiras, mas não consegui achar nada,
Alguém de vcs sabe como resolver isso??

Boa noite,

Eu já consegui resolver o problema, estava faltando a biblioteca do facelets do spring.
Caso alguém esteja com o mesmo problema pode baixa-la através do link:

http://spring-security-facelets-taglib.googlecode.com/svn/repo/org/springframework/security/facelets-taglib-jsf20-spring-3/0.5/

Criado 1 de novembro de 2011
Ultima resposta 3 de nov. de 2011
Respostas 7
Participantes 2