configurações Spring Security

6 respostas
N

Boa noite, sou novato com o Spring security, e to tentando usar ele juntamento com o JSF + Primefaces + Hibernate

Eu queria saber se alguem poderia me ajudar com as configurações do arquivo web.xml,
Mas eu preciso do web.xml configurado somente para o arquivo applicationContext do Spring.

Aguardo resposta

6 Respostas

G

Fala Narutor99,

Provavelmente isso te ajude:

http://www.loiane.com/2010/01/tutorial-comecando-com-spring-security/

:wink:

N

guivirtuoso:
Fala Narutor99,

Provavelmente isso te ajude:

http://www.loiane.com/2010/01/tutorial-comecando-com-spring-security/

:wink:

Cara muito obrigado me ajudou muito…

N

Mas agora eu to com outro problema.....

Quando eu carrego a minha página ela carrega os componentes do primefaces, só que o meu template que contem os menus não está carregando.
Alguem saberia como me ajudar

Abaixo segue o meu código do meu web.xml

<!-- Spring -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/application-config.xml</param-value>
    </context-param>
    
     <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    
    </listener>
    
    <!-- JSF -->
     <context-param>
        <param-name>facelets.DEVELOPMENT</param-name>
        <param-value>true</param-value>
    </context-param>
    
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
    
    <!-- Prime faces-->
    
     <context-param>
        <param-name>primefaces.THEME</param-name>
        <param-value>south-street</param-value>
    </context-param>
    
    <servlet>
        <servlet-name>Resource Servlet</servlet-name>
        <servlet-class>org.primefaces.resource.ResourceServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>Resource Servlet</servlet-name>
        <url-pattern>/primefaces_resource/*</url-pattern>
    </servlet-mapping>
  
    <!--Spring Security 3-->
    
   <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> 
    

<!-- outras configurações gerais -->
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    
    
    <welcome-file-list>
        <welcome-file>index.xhtml</welcome-file>
    </welcome-file-list>
</web-app>
N
Pessoal a minha aplicação com o Spring security além do problema com o prime faces citada acima agora ta dando o seguinte erro,,, Veja se alguem podem e ajudar
Grave: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 9 in XML document from ServletContext resource [/WEB-INF/spring/application-config.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 9; columnNumber: 75; cvc-complex-type.2.4.c: O curinga correspondente é restrito, mas nenhuma declaração pode ser encontrada para o elemento 'context:component-scan'.
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396)
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
	at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)
	at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:93)
	at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
	at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397)
	at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723)
	at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
	at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
O meu application-config
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
" xmlns:context="http://www.springframework.org/schema/context">
   

    <context:component-scan base-package="com.rfmagni.tcc.springsecurity"></context:component-scan>

    <import resource="applicationContext.xml"></import>

</beans>
O meu applicationContext
<?xml version="1.0" encoding="UTF-8"?>
<b:beans xmlns="http://www.springframework.org/schema/security" 
       xmlns:b="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       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.xsd
">
    
    <global-method-security secured-annotations="enabled">
    </global-method-security>

    <http auto-config="true" access-denied-page="/index.xhtml">  
        <intercept-url pattern="/admin/**" access="ROLE_ADMIN" />  
        <intercept-url pattern="/paginas/**" access="ROLE_USER" />  
        <form-login login-page="/index.xhtml" />  
    </http>
   
    <authentication-manager>
        <authentication-provider user-service-ref="validaUsuario"/>
    </authentication-manager>  
    
</b:beans>
e a minha classe que implementa a interface do UserDetailsService
@Component("validaUsuario")
public class ValidaUsuario implements UserDetailsService{

    @Autowired
    private UsuarioDAO userDAO;
    
    
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException {
       UserDetails user = (UserDetails) userDAO.procurarUsuario(username);
       return user;
    }
    
}

Sem mais! Aguardo Resposta

G

Bom Naruto,

O erro é bem explicito referente a esta linha do seu application-config :

&lt;context:component-scan base-package="com.rfmagni.tcc.springsecurity"&gt;&lt;/context:component-scan&gt;

Acho que você deveria remover esta linha, realizar mais testes e depois adicionar novamente. E se o erro voltar, verificar melhor como implementar esse “context:component-scan”.

Sobre o PrimeFaces, acho que você não deveria misturar os assuntos e criar um novo tópico sobre o problema.

Abraços.

N

Bom dia… O erro que eu tinha agora a pouco eu consegui resolver mas agora o meu problema é outro…
Primeiramente eu queria informar que eu ja revirei todos os materiais possiveis e não consegui achar nada que esclareça a minha duvida…

eu queria saber como eu faço para usar certinho o hibernate com o spring security só que configurando um arquivo chamado persistence.xml.

O meu arquivo persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="TestePrimeFacesPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>com.rfmagni.tcc.springsecurity.beans.ContaReceber</class>
    <class>com.rfmagni.tcc.springsecurity.beans.Permissao</class>
    <class>com.rfmagni.tcc.springsecurity.beans.NotaFiscal</class>
    <class>com.rfmagni.tcc.springsecurity.beans.Usuario</class>
    <class>com.rfmagni.tcc.springsecurity.beans.Pessoa</class>
    <class>com.rfmagni.tcc.springsecurity.beans.Produto</class>
    <class>com.rfmagni.tcc.springsecurity.beans.Endereco</class>
    <class>com.rfmagni.tcc.springsecurity.beans.NotaFiscalHasProduto</class>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="hibernate.connection.username" value="postgres"/>
      <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
      <property name="hibernate.connection.password" value="postgres"/>
      <property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/SpringSecurity"/>
    </properties>
  </persistence-unit>
</persistence>

A minha classe usuarioDAO

@Component
public class UsuarioDAO<Usuario> {
  private static EntityManagerFactory emf;
  private EntityManager em;

  public UsuarioDAO() {
    if (emf == null) emf = Persistence.createEntityManagerFactory("TestePrimeFacesPU");
    em = emf.createEntityManager();
  }

  public void persistir(Usuario usuario) {
    em.getTransaction().begin();
    em.persist(usuario);
    em.getTransaction().commit();
  }

  public void remover(Usuario usuario) {
    em.getTransaction().begin();
    em.remove(usuario);
    em.getTransaction().commit();
  }

  public void alterar(Usuario usuario) {
    em.getTransaction().begin();
    em.merge(usuario);
    em.getTransaction().commit();
  }

  public List<Usuario> executeNamedQuery(String namedQuery) {
    Query query = em.createNamedQuery(namedQuery);
    return query.getResultList();
  }
  
  public Usuario procurarUsuario(String username) {
        Query query = em.createNamedQuery("Usuario.findByUsername").setParameter("username", username);
        return (Usuario) query.getSingleResult();
    }

  public Usuario findById(Class classe,Object id) {
    return (Usuario)em.find(classe, id);
  }
}

A minha classe ValidaUsuario

@Component("validaUsuario")
public class ValidaUsuario implements UserDetailsService{

    @Autowired
    private UsuarioDAO userDAO;
    
    
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException {
       UserDetails user = (UserDetails) userDAO.procurarUsuario(username);
       return user;
    }
    
}

E o meu código do applicationContext

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

       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.xsd
">
    
    <http auto-config="true" access-denied-page="/index.xhtml">  
        <intercept-url pattern="/admin/**" access="ROLE_ADMIN" />  
        <intercept-url pattern="/paginas/**" access="ROLE_USER" />  
        <form-login login-page="/index.xhtml" />  
    </http>
   
    <authentication-manager>
        <authentication-provider user-service-ref="validaUsuario"/>
    </authentication-manager>  
    
</b:beans>

Caso alguém possa ajudar ficarei agradecido,
Obs: a minha aplicação é só javaWeb normal e não javaEE

Criado 8 de outubro de 2011
Ultima resposta 10 de out. de 2011
Respostas 6
Participantes 2