Filtro: Redirecionamento Incorreto

2 respostas
X

Pessoal, depois que apliquei um filtro, sempre que executo a aplicação aparece a seguinte mensagem no firefox.

Redirecionamento incorreto
O Firefox detectou que o pedido para este endereço não será concluído devido à forma que o servidor o está redirecionando.
Este problema algumas vezes pode ser causado pela desativação ou bloqueio de cookies.

Pois bem, segue o código… quem puder ajudar agradeço.

login.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Login Page</title>
    </head>
    <body>
        <h1>Please Login</h1>
        <form action="LoginServlet">
            Login: <input type="text" name="login" size="30"/> <br/>
            Senha: <input type="password" name="senha" size="30"/> <br/>
            <input type="submit" value="Login"/>
        </form>
    </body>
</html>

LoginServlet

public class LoginServlet extends HttpServlet {

     protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        UsersControl control = new UsersControl();
        String username = request.getParameter("login");
        String senha = request.getParameter("senha");
        try {
            if (username == null || senha == null || !control.validUserAndSenha(username, senha)) {
                response.sendRedirect("erroLogin.jsp");
            } else {
                request.getSession().setAttribute("isLogged", new Boolean(true));
                response.sendRedirect("products.jsp");
            }
        } catch (SQLException ex) {
            Logger.getLogger(LoginServlet.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

AuthFilter

public class AuthFilter implements Filter {

    public AuthFilter() {
    }
   
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;
        Object logged = req.getSession().getAttribute("isLogged");
        String url = req.getRequestURL().toString();
        if (logged == null && !url.contains("erroLogin.jsp")) {
            res.sendRedirect("login.jsp");
            return;
        }
        chain.doFilter(request, response);
    }

Abço.

2 Respostas

X

segue o web.xml

<filter> <filter-name>AuthFilter</filter-name> <filter-class>my.completwebapp.servlet.filter.AuthFilter</filter-class> </filter> <filter-mapping> <filter-name>AuthFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>AddProductServlet</servlet-name> <servlet-class>my.completewebapp.servlet.AddProductServlet</servlet-class> </servlet> <servlet> <servlet-name>UpdateProductServlet</servlet-name> <servlet-class>my.completewebapp.servlet.UpdateProductServlet</servlet-class> </servlet> <servlet> <servlet-name>RemovaProductServlet</servlet-name> <servlet-class>my.completewebapp.servlet.RemovaProductServlet</servlet-class> </servlet> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>my.completewebapp.servlet.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>AddProductServlet</servlet-name> <url-pattern>/AddProductServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>UpdateProductServlet</servlet-name> <url-pattern>/UpdateProductServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>RemovaProductServlet</servlet-name> <url-pattern>/RemovaProductServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/LoginServlet</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list> </web-app>

X

Acho que o problema está na seguinte condição!

String url = req.getRequestURL().toString();  

if (logged == null && !url.contains("erroLogin.jsp")) {  
   res.sendRedirect("login.jsp");  
   return;  
}  

chain.doFilter(request, response);

No código acima acho que cria um loop, não passa para chain.doFilter(request,response);
E também não direciona para a pagina de login =/

Se eu faço

if (logged == null && url.contains("erroLogin.jsp")) {

consigo acessar a página de login, porem o filtro fica inutil, pois tambem consigo acessar todas as outras págias.

Criado 8 de julho de 2011
Ultima resposta 9 de jul. de 2011
Respostas 2
Participantes 1