Como fazer sessão de login?

Olá, gostaria de saber como fazer uma sessão de login, onde depois que a pessoa loga no site (Login e Senha), ela permaneça conectada.
Gostaria de saber também como deslogar e também como fazer para que o usuário compre um produto somente quando ele estiver logado no site.
Eu fiz varios testes, mas não funciona, eu preciso de ajuda urgentemente, agradeço a ajuda de vocês

Mostre o código e ajudaremos nas duvidas e correção de erros.

1 curtida

Eu não possuo o código, gostaria de saber como é feito. Porque eu possuo um modal de login e queria que, ao ser clicado, aberto e acessado, o usuário entra na sessão, e que tenha a opção de sair da sessão caso ele queira. Eu posso passar o código do meu modal, mas é tudo que eu vou poder mandar.

Eu tenho esse código

https://github.com/Daniel-Dos/Livraria-XPTO-Sistema-de-Reservas-de-Livros-On-Line/blob/master/src/action/struts/LoginAction.java

DAO pra pegar usuario cadastrado

public Usuario logarUsuario(String username, String password) throws SQLException{
        Connection conn = Conexao.getInstance();
        PreparedStatement ps = null;
        ResultSet result = null;
        Usuario usuario = null;
        try{
            String sql = "SELECT id, username, password FROM tb_usuario WHERE username=? AND password=?";
            ps = conn.prepareStatement(sql);
            ps.setString(1, username);
            ps.setString(2, password);
            result = ps.executeQuery();
            if(result.next()){
                usuario = new Usuario();
                usuario.setId(result.getLong("id"));
                usuario.setUsername(result.getString("username"));
                usuario.setPassword(result.getString("password"));
            }
        } catch(Exception e){
            e.printStackTrace();
        } finally{
            if(ps!= null){
                ps.close();
            }
            if(result != null){
                result.close();
            }
        }
        return usuario;
    }

Criando a sessão

HttpSession session = request.getSession();
UsuarioDao usuarioDao = new UsuarioDao();
            
String username = "username";
String password = "password"; // Não estou gerando hash porque é só pra mostrar a idéia
            
Usuario usuario = usuarioDao.logarUsuario(username, password);
session.setAttribute("usuario", usuario);

Recuperando a sessão

HttpSession session = request.getSession();
Usuario usuario = (Usuario) session.getAttribute("usuario");

Pessoal, eu consegui fazer a sessão com a ajuda de vocês, mas se você voltar a página, a sessão continua. O que eu faço?

a session só vai ser anulada quando ela for invalidada

session.invalidate();

Espero ter ajudado

Então eu coloquei o session.invalidate(); e chega a encerrar a sessão, mas se você aperta o botão de voltar do navegador a sessão volta a ficar ativa.

vc terá q ter um filtro no seu sistema
http://www.devmedia.com.br/trabalhando-com-sessao-e-filter-em-jsf/32358

Nesse artigo que você me passou está em JSF, mas eu to fazendo e precisando na linguagem JSP.

Seja feliz :joy:

https://www.caelum.com.br/apostila-java-web/recursos-importantes-filtros/