Redirecionar da página de login pelo filtro

Java

09/08/2015

Bom Dia!

Estou com a seguinte dificuldade:

Tenho uma página de login e gostaria de que toda vez que o usuário chegasse lá, fosse feita uma verificação.

Caso ele já estiver logado, ele é redirecionado para a página principal.

Eu consegui isso com o código abaixo:
<%@ page import="java.util.*" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<jsp:useBean id="validaLogin" class="dao.admin.TestaLoginAdmin" />

<c:set var="AdminLogado" value="${validaLogin.testaLoginAdmin(pageContext.request)}" />

<c:choose>
  <c:when test="${AdminLogado != null}">
      <script>window.location="principal.jsp"; </script>
  </c:when>
</c:choose>


<div id="indexMeio">

    <h2>Formulário de Acesso ao ambiente administrativo</h2><br /><br />

    <form action="../LoginAdminServlet" method="post">
      <label>Login</label> : <input type="text" name="login" id="login" maxlength="10" required="required" /><br /><br />
      <label>Senha</label> : <input type="password" name="senha" id="senha" maxlength="10" required="required" /><br /><br /><br />

      <input type="submit" value="Entrar">
    </form><br />

</div>

Sim, funciona normalmente.

Mas eu tenho um filtro para verificar nas outras páginas se o usuário esta logado para poder acessá-las e esse filtro bloqueia o script acima dando erro de servidor.

Mas pensei se isso não poderia ser feito diretamente no filtro mas não estou conseguindo.
Podem me ajudar?
Veja o filtro:
package filtro;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebFilter("/admin/*")
public class AdminFilter implements Filter 
{
    private static List<String> allowedURIs;

    public AdminFilter() 
    {
        // TODO Auto-generated constructor stub
    }

public void destroy() 
{
// TODO Auto-generated method stub
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException 
    {         
      HttpServletRequest req = (HttpServletRequest) request;  
      HttpServletResponse res = (HttpServletResponse) response;  
      HttpSession sessao= req.getSession();  

           if(
            sessao.getAttribute("admin")!= null || 
            precisaDireitoAcessoURI(req.getRequestURI()) || 
            req.getRequestURI().equals("/imwsaogotardo/admin/") || 
            req.getRequestURI().equals("/imwsaogotardo/admin")
          )
           {
               chain.doFilter( request, response );
           }
           else
           {    
               res.sendRedirect("index.jsp");  
           }            
    }

public void init(FilterConfig fConfig) throws ServletException 
    {
        if(allowedURIs == null)
        {
            allowedURIs = new ArrayList<String>();
            allowedURIs.add("/imwsaogotardo/admin/index.jsp");
            allowedURIs.add("/imwsaogotardo/admin/retornos/");
        }
    }

public boolean precisaDireitoAcessoURI(String uriAtual) 
{

   for (String uri: allowedURIs) 
   {
       if (uriAtual.contains(uri))
           return true;
   }

   return false;
} 
}

Ou de repente um recurso para funcionarem juntos o filtro e esse script

tentei da forma abaixo mas também não funcionou dentro dol filtro:
 System.out.println(req.getRequestURI());

 if(
         sessao.getAttribute("admin")!= null && (
                                                  req.getRequestURI() == "/imwsaogotardo/admin/index.jsp" ||
                                                  req.getRequestURI() == "/imwsaogotardo/admin/"
                                                )
  )
 {
     res.sendRedirect("principal.jsp");
 }
Carlos Rocha

Carlos Rocha

Curtidas 0
POSTAR