Dae galera… estou com um problema no meu Filtro…
Quando eu tento acessar um link dessa maneira pra ver se o meu filtro esta certo
http://localhost:8080/SGD/ServDocumentoController?command=incluirDocumento&tipoOperacao=add
ele tenta redirecionar para a pagina de login, mas nunca a encontra, hoje ela esta assim:
String url = "jsp/frmLogin.jsp";
Dae quando eu coloquei o nome do contexto, funcionou em partes
String url = "SGD/jsp/frmLogin.jsp";
porque em partes, porque ele carrega a pagina sem os seus css, vem só o html…
esse é um dos problemas, o outro é que ao entrar nessa pagina de login que ele acabou de me redirecionar porque eu tentei acessar uma pagina sem me logar, ele ao dar o submit vai para o endereço errado… tipo… o endereço certo era isso:
http://localhost:8080/SGD/ServDocumentoController?command=incluirDocumento&tipoOperacao=add ele tenta redirecionar para a
Dae ele adiciona um /jsp
http://localhost:8080/SGD/jsp/ServDocumentoController?command=incluirDocumento&tipoOperacao=add ele tenta redirecionar para
a
Muito estranho tudo isso…
Quando eu tento acessar uma pagina jsp diretamente ele aceita, ele só bloqueia caso eu tente passar o link com o nome do meu servlet…
Segue a estrutura do projeto(NetBeans):
[code]SGD
- Páginas Web
- WEB-INF
- jsp
- Todos os jsp’s…
…[/code]
Meu jsp de login e seu action
- Todos os jsp’s…
<form id="frmLogin" name="frmLogin" method="post" action="ServLogon">
Meu web.xml
<filter>
<filter-name>SecurityFilter</filter-name>
<filter-class>br.gov.sc.alesc.sgd.controller.SecurityFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SecurityFilter</filter-name>
<url-pattern>/ServDocumentoController/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>SecurityFilter</filter-name>
<url-pattern>/ServEntidadeController/*</url-pattern>
</filter-mapping>
E o meu filtro
[code]public class SecurityFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
boolean isValid = false;
try {
isValid = verifyAccess((HttpServletRequest) request);
} catch (Exception e) {
throw new ServletException(e.getMessage());
}
if (!isValid) {
String url = "jsp/frmLogin.jsp";
((HttpServletResponse) response).sendRedirect(url);
((HttpServletResponse)response).getWriter().flush();
((HttpServletResponse)response).getWriter().close();
return;
}
chain.doFilter(request, response);
}
public void destroy() {
}
protected boolean verifyAccess(HttpServletRequest request) throws Exception{
UsuarioVO usuario = ( UsuarioVO ) request.getSession().getAttribute("user");
boolean isInvalidSistema = false;
if( usuario!= null)
isInvalidSistema = true;
return isInvalidSistema;
}
}[/code]
No meu web.xml eu não coloquei o /* desse jeito, porque ele ficava passando pelo meu Servlet de login, dae eu nunca conseguia passar por ele, a alternativa que encontrei foi definir todos os urls que o meu filtro tem de passar… é a primeira vez que uso esse filtro, se alguém tiver outra ideia de implementação ou dicas será bem vindo…
Valeu!!