Bem fiz sisteminha de login e senha e tudo funcionando perfeitamente. O que acontece é que queria implementa-lo um pouco, fazendo com que por exemplo usuário com nível de acesso 1 não pudesse ver gráficos. A dúvida é, como eu resgato os atributos do usuário quando ele se loga, por exemplo, tenho o usuário joão com senha 1234, ele se loga, como resgatar o atributo “nível” do joão?
Segue como foi feito o sistema de autenticação:
UsuarioDAO
public class UsuarioDAO {
private Connection connection;
public UsuarioDAO() {
dao = new DAO<Usuario>(JPAUtil.getEntityManager(), Usuario.class);
try {
connection = new ConnectionFactory().getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
//Alguns metodos de acesso ao banco ...
public boolean existeUsuario(Usuario usuario) {
if (usuario == null) {
throw new IllegalArgumentException("Usuário não deve ser nulo");
}
try {
PreparedStatement stmt = this.connection
.prepareStatement("select * from usuarios where login = ? and senha = ?");
stmt.setString(1, usuario.getLogin());
stmt.setString(2, usuario.getSenha());
ResultSet rs = stmt.executeQuery();
boolean encontrado = rs.next();
rs.close();
stmt.close();
return encontrado;
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
Método que efetua o Login
@RequestMapping("/efetuaLogin")
public String efetuaLogin(Usuario usuario, HttpSession session) {
if (new UsuarioDAO().existeUsuario(usuario)) {
session.setAttribute("usuarioLogado", usuario);
return "inicio";
}
return "redirect:login";
}
E o que tentei fazer, curioso que da maneira que fiz consigo resgatar o login e a senha, apenas, qualquer outro atributo do usuario retorna um valor null. Neste caso tentei resgatar o nome, e no console voltou Null, se eu coloco System.out.println(usuario.getLogin) ele retorna o login corretamente.
[quote=Rodrigo Sasaki]Acho que você quer dizer que quer “incrementá-lo”, não?
Sobre os valores que vem null, eles possuem valor diferente no banco de dados?
E por favor, use as tags para postar código.[/quote]
Quero resgatar o valor para poder usar no meu método, os valores estão devidamente cadastrados no banco de dados, por exemplo em getNome(), devia retornar Jõao pedro e em getNivel() devia retornar 2. Não sei por que estão retornando null. Já quando peço getLogin() ele retorna corretamente joao e getSenha() também retorna corretamente a senha 1234.
Queria fazer algo mais simples, algo assim resolveria meu problema:
if(usuario.nivel().equals(1)){
return "erro"
}
além disso, gostaria de em dados momentos, citar o nome do usuário na página, por exemplo na tele inicial citar “Bem vindo USUARIO”. E estou utilizando JSP.
public T busca(Integer id) {
return em.getReference(classe, id);
}
esse método que faz buscas por Id, funciona perfeitamente e já foi usado antes e continua sendo usado, por exemplo pra localizar e deletar um registro. O problema é que não consigo acessar o parametro Id para realizar uma busca, consigo retorno diferente de null APENAS em login e senha, qualquer outro, includive Id, vem com valor null
[quote=kaahxd] public T busca(Integer id) {
return em.getReference(classe, id);
}
esse método que faz buscas por Id, funciona perfeitamente e já foi usado antes e continua sendo usado, por exemplo pra localizar e deletar um registro. O problema é que não consigo acessar o parametro Id para realizar uma busca, consigo retorno diferente de null APENAS em login e senha, qualquer outro, includive Id, vem com valor null[/quote]
Ah, você misturou JPA com JDBC? que salada…
isso é uma Entity então… já tentou trocar o getReference pelo find? você sabe qual a diferença entre os 2 ?
Entenda como funciona a parte de consulta do JPA. [=[/quote]
Acho que estão me interpretando errado, não estou com problema na busca, apenas gostaria que alguém me ajudasse em relação a pegar os parâmetros na session, assim que eu me logar como faço para acessar os atributos do meu usuario? acessar o nome, email, idade, etc. para que possa utilizar esses dados na aplicação.
Notei que apenas os dados que eu dou entrada no formulário e fazem parte da verificação no método existeUsuario dentro da classe UsuarioDAO, ou seja login e senha, aparecem na minha requisição (retornam valores diferentes de null) os demais voltam null. Segue os trechos:
public boolean existeUsuario(Usuario usuario) {
if (usuario == null) {
throw new IllegalArgumentException("Usuário não deve ser nulo");
}
try {
PreparedStatement stmt = this.connection
.prepareStatement("select * from usuarios where login = ? and senha = ?");
stmt.setString(1, usuario.getLogin());
stmt.setString(2, usuario.getSenha());
ResultSet rs = stmt.executeQuery();
boolean encontrado = rs.next();
rs.close();
stmt.close();
return encontrado;
efetuaLogin
@RequestMapping("/efetuaLogin")
public String efetuaLogin(Usuario usuario, HttpSession session) {
if (new UsuarioDAO().existeUsuario(usuario)) {
session.setAttribute("usuarioLogado", usuario);
return "inicio";
}
return "redirect:login";
}