Servlet Filter simplesmente não funciona

5 respostas
rock-skull

Olá. Tenho uma simples aplicação web desenvolvida no Netbeans Visual Web Pack.

Bom resumindo, existe uma parte de login. O sistema aceita dois tipos de usuarios deiferentes: professor e aluno. O meu problema é o seguinte: Implementei um filtro para permitr apenas que os alunos acessem a area de alunos e os professores a área de professores.

O código do filtro é essse:

public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;
        HttpSession sessao = req.getSession();
        
        String tipoUsuarioSessao = (String) sessao.getAttribute("tipoUsuario");
        
        if(tipoUsuarioSessao.equals("aluno")){
            chain.doFilter(request, response);
        }else{
            res.sendRedirect("../restritoAluno.jsp");
        }
    }

Esse atriobuto tipoUsuario é um parametro de Sessao que eu criei.

Meu web.xml tá configurado assim para o filtro:

<filter>
        <filter-name>filtroAluno</filter-name>
        <filter-class>experiencia.aluno.filtroAluno</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>filtroAluno</filter-name>
        <url-pattern>/aluno/*</url-pattern>
    </filter-mapping>

Ao logar, dependendo do tipo de usuario (O filtro seria semelhante para professor) você será redirecionado para a página inicial de cada área. Coloquei um hiperlink direto pra página inicial de cada área para testar o filtro. Mesmo não logando, eu consigo entrar na página, ou seja o filro não funciona.

Agora… Por quê ??

5 Respostas

rock-skull

ngm ?

zirocool
((HttpServletResponse)res).sendRedirect("../algumapagina.jsp");
rock-skull

Mas eu coloquei isso… linha 13 do método doFilter que eu postei acima…

rock-skull

Descobri duas coisas confusas.

Primeiro, meu filtro tá configurado pra funcionar na pasta onde ficam as páginas relacionadas aos alunos:

<filter-mapping>
        <filter-name>filtroAluno</filter-name>
        <url-pattern>/aluno/*</url-pattern>
    </filter-mapping>

Mas se eu deixar ele pra configurado pra mapear por Faces Servelt:

<filter-mapping>
        <filter-name>filtroAluno</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>
    <

o que abrange todas as minhas páginas, o filtro parentemente funciona, mas ele dá um erro que não consegue achar a página restritoAluno.jsp

Porque que no geral ele funciona e quando eu especifico um local não ?? E porque ele não tá conseguindo achar a minha página, já tentei de tudo quanto foi jeito esse sendRedirect().

rodrigoallemand

Faz um teste… passa o caminho completo a partir do contexto nesse redirect pra ver se funciona… se sim, seu filter tá legal, é só o caminho do jsp que está errado…

Criado 16 de novembro de 2007
Ultima resposta 29 de nov. de 2007
Respostas 5
Participantes 3