Dúvida

Bom dia a todos!

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.


    @RequestMapping("/viewGrafico")  
    public String viewGrafico(Usuario usuario, HttpServletRequest request) {  
      
        usuario = (Usuario) request.getSession().getAttribute("usuarioLogado");  
      
        System.out.println(usuario.getNome());  
      
        return "/controle/graficos";  
    }  

Alguém pode me ajudar? Desde já agradeço!

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.

Se quiser realmente incrementar seu login, você pode usar JAAS.

Validação de Login de Usuário com JSF e JAAS

[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.

Como você busca o usuário?

[quote=Rodrigo Sasaki]Se quiser realmente incrementar seu login, você pode usar JAAS.

Validação de Login de Usuário com JSF e JAAS[/quote]

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.

Mais mesmo assim obrigado pela dica! :smiley:

Tenho um método que faz buscas pelo Id, posso encontrar um usuário usando:

Usuario usuario = dao.getBusca(1) // buscar usuario de ID = 1

Tenho um método que faz buscas pelo Id, posso encontrar um usuário usando:

Usuario usuario = dao.getBusca(1) // buscar usuario de ID = 1

[/quote]

Pode postar o método? senão não tenho como saber o que que está dando errado na sua busca.

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 ?

Mano, dá uma lida aqui: JPA Consultas e Dicas.

Entenda como funciona a parte de consulta do JPA. [=

[quote=Hebert Coelho]Mano, dá uma lida aqui: JPA Consultas e Dicas.

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";
	}

Creio que há uma relação, alguma ideia?