Gostaria de sugestoes do grupo sobre como eu posso estar implementando um limite de tentativas de login em um sistema usando Java 1.4, Strtuts, LDAP e Tomcat 5.5? Ou seja, se por exemplo um usuario tentar logar 3 vezes no sistema sem sucesso, o seu usuario eh bloqueado.
sugestão 1: Utilize o HttpSession para acumular a quantidade de tentativas do usuário. Para garantir o funcionamento mesmo sem os cookies, utilize o recurso de reescrita de urls de HttpServletResponse no seu botão/link de login.
sugestão 2: Mantenha em ServletContext um contre de login_name x ip x tentativas x data_ultima_tentativa.
Só por curiosidade, como manter uma HttpSession se teoricamente antes do login o usuário não irá ter uma sessão criada?
Ou a sugestão é vincular a quantidade de tentativas ao jsessionid?
Uma HttpSession não começa no login do usuário.
Basta acessar qualquer recurso dinâmico da aplicação Java Web que vincule um objeto em HttpSession - pronto, a partir daí um id de sessão (jsessionid) é criado para o usuário, e devolvido por cookies ou por reescrita de url para o browser.
Voce fala que posso iniciar uma sessao quando iniciar o browser ?
se for isso … entendi !
e posso tomar como ideia !
Voce tem mais detalhes para um iniciante ? se não incomodar rbellia !! é claro.
Não, não quando inicia o browser, mas a cada requisição feita ao seu AS.
Se a requisição não tiver um jsessionid vinculado a ela, será criado pelo container.
A idéia dele é a partir desse jsessionid vincular a quantidade de tentativas a ele.
Ps: Se estiverem usando o Active Directory, ele possui uma política desta já pronta.(Bem provável que o OpenLDAP ou algum outro também tenha)
Voce fala que posso iniciar uma sessao quando iniciar o browser ?
se for isso … entendi !
e posso tomar como ideia !
Voce tem mais detalhes para um iniciante ? se não incomodar rbellia !! é claro.
Valeu
Obrigado
t+
[/quote]
Por exemplo, faça o form de login com JSP.
Neste JSP faça a seguinte construção:
<%
Integer c = (Integer) session.getAttribute("contadorLogin");
if (c == null) {
session.setAttribute("contadorLogin", new Integer(0));
} else {
if (c.intValue() > limiteTentativasLogin) {
response.sendRedirect("hoje_naum_tem_passa_amanha.html");
} else {
c = new Integer(c.intValue() + 1);
session.setAttribute("contadorLogin", c);
}
}
%>
Se não quiser fazer com JSP (por exemplo, seu form de login já está pronto em HTML) essa lógica tbém pode ser construída com ServletFilter.