Olá, pessoal. Fiz todas as modificacoes nas classes Login, Logout, FiltroDeAuditoria mas nao aparece no Cookie (quando visto pelo navegador) o JSessionId. Continua a mostrar o o mail do login. Alias, tenho tido muitas dificuldades em fazer o curso uma vez que tenho acompanhado e feito tudo tal qual explicado mas os resultados em termos de navegador (cookies) nao tem sido condizentes. Entao jogo as duvidas no Forum mas demoram a serem respondidas e tenho eu mesmo tentado sanar minhas duvidas. O que tem me demandado um tempo absurdo para finalizar este curso. Nao sei, mas penso que este curso nao esta bem estruturado. Segue minhas classes: Login:
@WebServlet(urlPatterns="/login")
public class Login extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter writer = resp.getWriter();
String email = req.getParameter("email");
String senha = req.getParameter("senha");
Usuario usuario = new UsuarioDAO().buscaPorEmailESenha(email, senha);
if (usuario == null) {
writer.println("<html><body>Usuário ou senha inválida!!!</body></html>");
}
else {
// Cookie cookie = new Cookie("usuario.logado", email);
// resp.addCookie(cookie);
HttpSession session = req.getSession();
session.setAttribute("usuario.logado", usuario);
writer.println("<html><body>Usuário logado: " + email + "</body></html>");
}
}
}
Logout:
@WebServlet(urlPatterns= "/logout")
public class Logout extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// Cookie cookie = new Cookies(req.getCookies()).getUsuarioLogado();
//
// if (cookie == null) {
// writer.println("<html><body>Usuario nao estava logado!<body></html>");
// }
// cookie.setMaxAge(0);
// resp.addCookie(cookie);
HttpSession session = req.getSession();
session.removeAttribute("usuario.logado");
PrintWriter writer = resp.getWriter();
writer.println("<html><body>Deslogado com sucesso!</body></html>");
}
}
FiltroDeAuditoria
@WebFilter (urlPatterns="/*")
public class FiltroDeAuditoria implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
//Cookie cookie = this.getUsuario(req);
//Cookie cookie = new Cookies(req.getCookies()).getUsuarioLogado();
HttpSession session = req.getSession();
Usuario usuarioLogado = (Usuario) session.getAttribute("usuario.logado");
String usuario = "<deslogado>";
// if (cookie != null) {
// usuario = cookie.getValue();
// }
if (usuarioLogado != null) {
usuario = usuarioLogado.getEmail();
}
System.out.println("Usuário " + usuario + " acessando a URI " + req.getRequestURI());
chain.doFilter(request, response);
}
private Cookie getUsuario(HttpServletRequest req) {
Cookie[] cookies = req.getCookies();
if (cookies == null) {
return null;
}
for (Cookie cookie: cookies) {
if (cookie.getName().equals("usuario.logado")) {
return cookie;
}
}
return null;
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
Navegador (Firefox. Mas em todos os outros e a mesma coisa):
RequestCookies
usuario.logado guilherme.silveira@alura.com.br