Duvida Basica - Logica de Login e Session

5 respostas
venomtotal

Duvida 1

Pessoal, como é a logica correta de login no jsp?

tipo:

  • tenho uma janela para digitar o nome do usuario e senha
  • ele verifica na base de dados se tal usuario existe na base de dados
  • Se usuario existe, é redirecionado para pagina destino, caso nao exista é emitido mensagem de erro

A duvida:

  • a parte de verificar a existencia na base de dados deve ser implementada aonde? Na pagina de login? Na pagina Destino? Ou crio uma classe para isso, que ficaria entre a pagina de login e a pagina de destino

Duvida 2

Apos verificar a existencia do usuario, como faco para reter as informacoes dele para utilizar nas demais janelas? Crio um session com o id do usuario e o utilizo para obter informacoes posteriores no BD?

agradeco qualquer ajuda

Venom

5 Respostas

hashcode

Duvida 1:
Parte de verificação é da classe controladora. Que pega informações de view(jsp) e comunica com a integração do seu banco de dados fazendo a condição de verificação de usuário.

Duvida 2:
Já viu que precisarás de uma classe Usuario Ok!? Sendo que a classe Usuario tenha no minímo usuário e senha que vem do banco de dados sendo assim vc tem:

String login = request.getParamter("html.usuario.login");
String pwd = request.getParamter("html.usuario.senha");
Usuario dobanco= Usuario.load(login,pwd); //Só pega se no banco tiver o usr e pwd corretos
Usuário dojsp = new Usuario(login,pwd);
if ( dobanco.getLogin().equals(dojsp.getLogin()){
   //Taca o usuario na sessao
   request.getSession().addAttribute("usuario",dobanco);
   
    request.sendRedirect("menu.jsp");
}else{
    request.sendRedirect("erropage.jsp");
}

dentro da sua classe de controle;
pega o usuário assim:

Usuario u = (Usuario) request.getSession().getAttibute("usuario");

Dica:
Não utilize a checagem de “sessão válida” em cada jsp. Use o padrão Intercepting Filter do Design Patterns J2EE http://java.sun.com/blueprints/corej2eepatterns/Patterns/
juntamente com Singleton do padrão Gof para um objeto Sessao.
ficaria algo como:

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //Apenas para facilitar a manutenibilidade do método
        HttpServletRequest request=(HttpServletRequest) servletRequest;
        HttpServletResponse response=(HttpServletResponse) servletResponse;
        HttpSession s = request.getSession();
        //Dentro do objeto Sessao temos o método isValida()
        //Taca o usuário também nesse objeto Sessao
        //Obs: Objeto Sessao não é um Session
        //O objeto Sessao dica como atributo da classe Session
        Sessao sessao = Sessao.getInstance(s);
        if (!sessao.isValida()){
            
            response.sendRedirect(Paginas.PAGINA_ERRO.toString());
            return ;
        }
        
        filterChain.doFilter(request,response);
    
    }

Tenta aí.

Shairon Toledo


http://formj.sourceforge.net

rpontano

Cara vo aproveita a carona e vo pedir ajuda.

Sou novo em java,

Estou fazendo o curso e estou tentando criar essa tela de login e não consigo de jeito nenhum,

seria possivel vc me mandar ela ?

Estou no aguardo,

Abraço

hashcode

Tenta essa API http://formj.sourceforge.net

amilhoranza

Cara você pode usar o mentawai e simplificar tudo, pois já existe esquema de autenticação no framework!
Se quiser saber mais é só falar.
Abraços
http://www.mentaframework.org/authentication.jsp

rpontano

Blz intaum cara,

Vo da uma olhada aqui e vo estuda um pouco issu ae

Obrigado pela dica

Abraço

Criado 12 de julho de 2006
Ultima resposta 9 de ago. de 2006
Respostas 5
Participantes 4