Tem uma coisa que eu não entendo. O Java (vários frameworks) tem listeners prá tudo, inclusive a especificação Servlets e JSP tem vários listeners disponíveis, porém o sistema de autenticação com método FORM não possui nenhum listener para dizer que o login ocorreu com sucesso ou não.
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/Login.jsp</form-login-page>
<form-error-page>/LoginError.jsp</form-error-page>
</form-login-config>
</login-config>
Gostaria muito de ter um listener para o evento de sucesso de login assim eu poderia carregar um objeto que representa um usuário na sessão do tomcat imediatamente após o sucesso do evento sem ter que ficar repetindo código que verifica se tal objeto já existe na sessão.
package com.motta.servlets.usuario;
import java.io.IOException;
......
public class SeusDados extends MyGenericServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// recupera sessão que já existe
HttpSession session = request.getSession(false);
Usuario usuario = (Usuario)session.getAttribute("usuario");
if (usuario == null) {
[b]UsuarioDAO usuarioDao = factory.createUsuarioDAO();
String nome = request.getUserPrincipal().getName();
usuario = usuarioDao.find(nome);
session.setAttribute("usuario", usuario);[/b]
}
RequestDispatcher view = request.getRequestDispatcher("/usuario/SeusDados.jsp");
view.forward(request, response);
}
}
Será que isso é possível?