Boa tarde à todos
Estou desenvolvendo uma aplicação e estou usando o spring security, juntamente com o hibernate.
O meu problema é que as duas tecnologias trabalhando em conjunto está gerado um problema.
Configurei o spring security para autenticar e fazer o controle de acesso, até aí ok.
Toda vez que registro um usuário e atribuo ao mesmo um nível de acesso e faço a autenticação com ele, automaticamente é executado na mesma query de busca de usuário, uma query para excluir as permissões dele.
QUERY FINAL:
Hibernate:
select
this_.id as id1_4_0_,
this_.email as email2_4_0_,
this_.nome as nome3_4_0_,
this_.senha as senha4_4_0_
from
Usuario this_
where
this_.email=?
Hibernate:
select
grupos0_.Usuario_id as Usuario1_4_1_,
grupos0_.grupos_id as grupos2_5_1_,
grupo1_.id as id1_6_0_,
grupo1_.descricao as descrica2_6_0_,
grupo1_.nome as nome3_6_0_
from
Usuario_grupo grupos0_
inner join
grupo grupo1_
on grupos0_.grupos_id=grupo1_.id
where
grupos0_.Usuario_id=?
Hibernate:
delete
from
Usuario_grupo
where
Usuario_id=?
A query de busca na classe UsuarioDAO
public Usuario porEmail(String email) {
Usuario user = null;
try {
this.setSessao(HibernateUtil.getSessionFactory().openSession());
setTransacao(getSessao().beginTransaction());
user = (Usuario) this.getSessao().createCriteria(Usuario.class).add(Restrictions.eq("email", email))
.uniqueResult();
} catch (NoResultException e) {
if (getTransacao().isActive()) {
getTransacao().rollback();
}
System.out.println("N�o foi poss�vel localizar Usuario: " + e.getMessage());
} finally {
sessao.close();
}
return user;
}
Minha configuração do spring security
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans=“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.1.xsd”>
<beans:bean id="appUserDetailService" class="br.com.scp.security.AppUserDetailService" />
<http pattern="/javax.faces.resource/**" security="none" />
<http auto-config="true" use-expressions="true" >
<intercept-url pattern="/Home.xhtml" access="isAuthenticated()" />
<intercept-url pattern="/composicao/**" access="hasAnyRole('ADMINISTRADOR')" />
<intercept-url pattern="/funcionario/**" access="hasAnyRole('ADMINISTRADOR')" />
<intercept-url pattern="/relatorio/**" access="hasAnyRole('ADMINISTRADOR', 'VENDEDOR')" />
<intercept-url pattern="/**" access="denyAll" />
</http>
<authentication-manager>
<authentication-provider user-service-ref="appUserDetailService">
<!-- <password-encoder hash="md5" /> -->
</authentication-provider>
</authentication-manager>
</beans:beans>
Estou com este problema já alguns dias e ate então não consegui resolver.
Espero contar com ajuda de vocês!