@hamilton.mateus escreveu:
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 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"
version="2.0"><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.
Mensagens: 1
Participantes: 1