Pessoal estou tentado logar com os users que tenho na minha base de dados mas nao consigo ele apenas cria a tabela mas nao vifica o que tem dentro da base de dados. vai ai meu codigo. Ajuda por favor.
UserDetailServiceImpl
package mz.co.mpteventos.springsecurity.controller;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import mz.co.mpteventos.springsecurity.dao.DAO;
import mz.co.mpteventos.springsecurity.dto.UserDetailsImpl;
import mz.co.mpteventos.springsecurity.model.Conta;
public class UserDetailServiceImpl implements UserDetailsService {
private Conta conta = new Conta();
@Override
public UserDetails loadUserByUsername(String username)
throws UsernameNotFoundException {
System.out.println("No sistema " +username);
System.out.println("Entrou no metodo");
conta = new DAO<Conta>(Conta.class).listaTodos().get(1);
System.out.println("na base de daods " + conta.getNome());
if (username.equalsIgnoreCase(conta.toString())) {
UserDetailsImpl user = new UserDetailsImpl();/*
user.setUserName(conta.getNome().toString());
user.setPassword(conta.getPassword().toString());
user.addAuthority(conta.getAuthorities().toString());*/
return user;
}
throw new UsernameNotFoundException("Usuario não encontrado");
}
// getters & setters
public Conta getConta() {
return conta;
}
public void setConta(Conta conta) {
this.conta = conta;
}
}
UserDetailsImpl
package mz.co.mpteventos.springsecurity.dto;
import java.util.ArrayList;
import java.util.Collection;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
public class UserDetailsImpl implements UserDetails {
/**
*
*/
private static final long serialVersionUID = 1L;
private String userName;
private String password;
private ArrayList<GrantedAuthorityImpl> authorities;
public void setUserName(String userName) {
this.userName = userName;
}
public void setPassword(String password) {
this.password = password;
}
public void addAuthority(String authorityName){
if (this.authorities == null) {
authorities = new ArrayList<GrantedAuthorityImpl>();
}
GrantedAuthorityImpl aut = new GrantedAuthorityImpl();
aut.setName(authorityName);
authorities.add(aut);
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
// TODO Auto-generated method stub
return authorities;
}
@Override
public String getPassword() {
// TODO Auto-generated method stub
return this.password;
}
@Override
public String getUsername() {
// TODO Auto-generated method stub
return this.userName;
}
@Override
public boolean isAccountNonExpired() {
// TODO Auto-generated method stub
return true;
}
@Override
public boolean isAccountNonLocked() {
// TODO Auto-generated method stub
return true;
}
@Override
public boolean isCredentialsNonExpired() {
// TODO Auto-generated method stub
return true;
}
@Override
public boolean isEnabled() {
// TODO Auto-generated method stub
return true;
}
}
GrantedAuthorityImpl
package mz.co.mpteventos.springsecurity.dto;
import org.springframework.security.core.GrantedAuthority;
public class GrantedAuthorityImpl implements GrantedAuthority {
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String getAuthority() {
// TODO Auto-generated method stub
return this.name;
}
}
DAO
package mz.co.mpteventos.springsecurity.dao;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.criteria.CriteriaQuery;
import mz.co.mpteventos.springsecurity.model.Conta;
public class DAO {
private final Class<T> classe;
public DAO(Class<T> classe) {
this.classe = classe;
}
public void adiciona(T t) {
// consegue a entity manager
EntityManager em = new JPAUtil().getEntityManager();
// abre transacao
em.getTransaction().begin();
// persiste o objeto
em.persist(t);
// commita a transacao
em.getTransaction().commit();
// fecha a entity manager
em.close();
}
public void remove(T t) {
EntityManager em = new JPAUtil().getEntityManager();
em.getTransaction().begin();
em.remove(em.merge(t));
em.getTransaction().commit();
em.close();
}
public void removeNaLista(List<T> t) {
EntityManager em = new JPAUtil().getEntityManager();
em.getTransaction().begin();
for (int i = 0; i < t.size(); i++) {
em.remove(em.merge(t.get(i)));
}
em.getTransaction().commit();
em.close();
}
public void atualiza(T t) {
EntityManager em = new JPAUtil().getEntityManager();
em.getTransaction().begin();
em.merge(t);
em.getTransaction().commit();
em.close();
}
public List<T> listaTodos() {
EntityManager em = new JPAUtil().getEntityManager();
CriteriaQuery<T> query = em.getCriteriaBuilder().createQuery(classe);
query.select(query.from(classe));
List<T> lista = em.createQuery(query).getResultList();
em.close();
return lista;
}
public T buscaPorId(Integer id) {
EntityManager em = new JPAUtil().getEntityManager();
T instancia = em.find(classe, id);
em.close();
return instancia;
}
public T buscaPorNome(String t) {
EntityManager em = new JPAUtil().getEntityManager();
T instancia = em.find(classe, t);
em.close();
return instancia;
}
public Conta encontrarUsuario(String nameUser) {
EntityManager em = new JPAUtil().getEntityManager();
try {
Conta user = (Conta) em
.createQuery(
"SELECT c from Conta c where c.nome = :nome and c.password = :password and r.authorities - :authorities")
.setParameter("nome", nameUser);
return user;
} catch (NoResultException e) {
return null;
}
}
public int contaTodos() {
EntityManager em = new JPAUtil().getEntityManager();
long result = (Long) em.createQuery("select count(n) from evento n")
.getSingleResult();
em.close();
return (int) result;
}
public List<T> listaTodosPaginada(int firstResult, int maxResults) {
EntityManager em = new JPAUtil().getEntityManager();
CriteriaQuery<T> query = em.getCriteriaBuilder().createQuery(classe);
query.select(query.from(classe));
List<T> lista = em.createQuery(query).setFirstResult(firstResult)
.setMaxResults(maxResults).getResultList();
em.close();
return lista;
}
}
JPAUtil
package mz.co.mpteventos.springsecurity.dao;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class JPAUtil {
private static EntityManagerFactory emf = Persistence.createEntityManagerFactory("springsecurity");
public EntityManager getEntityManager() {
return emf.createEntityManager();
}
public void close(EntityManager em) {
em.close();
}
}
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence-unit name="springsecurity" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>mz.co.mpteventos.springsecurity.model.Conta</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/mpteventosdb" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="fonsildb2" />
<property name="hibernate.hbm2ddl.auto" value="create" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
</properties>
</persistence-unit>
Nota: Se eu tentar logar sem precisar dabase de dados directo ele aceita.