Jump to content

Recommended Posts

Posted (edited)

Olá pessoal!

Tenho uma filtro para validar login de administrador.

Ocorre que eu tenho um ArrayList de arquivos e diretórios que gostaria que o filtro não bloqueasse caso o usuário não logado chegasse nele!

Na minha Servlet de validação, tenho o caso do Admin inválido, do Admin Válido e do Admin Bloqueado.

Admin válido = direciona para a página principal.jsp => Ok funcionando

Admin Inválido = direciona para página de login index.jsp => Ok funcionando

Admin bloqueado = deveria direcionar para a página adminBloqueado.jsp que esta no diretório admin/retiornos/admin. Mas esta direcionando para admin/retiornos/admin/index.jsp e nesse caso, esse arquivo não existe.

Servlet

...
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{
request.setCharacterEncoding("UTF-8") ;

String login = request.getParameter("login");

String senha = request.getParameter("senha");

if( login.equals("") || senha.equals("") )
{
response.sendRedirect("admin/retornos/admin/dadosFaltantes.jsp");
}

AutenticaAdmin autenticaAdmin = new AutenticaAdmin();

Admin admin = autenticaAdmin.pesquisaAutenticaAdmin (login, senha);

if(admin!=null)
{
HttpSession sessao = request.getSession();

if(admin.getStatus().equals("d"))
{ 
sessao.setAttribute("admin", admin);
response.sendRedirect("admin/retornos/admin/loginOK.jsp");
}
else
{ 
sessao.setAttribute("nomeAdmin", admin.getNome()); 
response.sendRedirect("admin/retornos/admin/loginBloqueado.jsp");
}
}
else
{
response.sendRedirect("admin/retornos/admin/loginERRO.jsp");
} 
}

...

Filtro

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

       System.out.println("------- "+req.getRequestURI()+" =======");
       if(sessao.getAttribute("admin")== null && !allowedURIs.contains(req.getRequestURI()))
       {
          logado= false;
       }
       else
       {    
          logado= true;  
       }  

       if (!logado){  
          res.sendRedirect("index.jsp");        
       }  
       chain.doFilter( request, response );   
   }


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

O que esta saindo errado aqui?

Edited by carcleo
Posted

Esse problema resolvi removendo essa parte do código:

....
if (!logado)
{  
   res.sendRedirect("index.jsp");        
}  
...

Mas além de a lógica ficar comprometida, quando estou editando um admin e envio o form, a requisição chega na servlet mas não executa a operação.

Outro problema que ocorre é que quando copio e colo a url no navegador, dá erro de compilação e o filtro não roda!

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.