Bom dia moçada,
Tenho uma aplicaçao e na hora de fazer o login, graças a Deus esta funcionando.
Porem agora eu quero colocar um filtro.
Consegui fazer o codigo mais ele não esta funcionando, ou seja, quando eu acesso o sistema ele leva pra pagina de login.jsf mas se eu digitar na barra main.jsf ele direciona ... ou seja não esta funcionando o filtro .......
alguem pode me ajudar ??????? ja pesquisei e nao encontrei nenhum problema parecido.
eis os codigos.
Meu loginBeanpublic String doLogin() throws SQLException {
Usuario us = userBean.isLoginValid(getFormBean().getLogin(), getFormBean().getLogin());
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("userLogged", us);
return "gotoMain";
}
public Usuario getFormBean() {
return formBean;
}
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException, SQLException {
String username = getFormBean().getLoginUI().getLocalValue().toString();
String password = value.toString();
Object valid = userBean.isLoginValid(username, password);
if (valid == null) {
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_FATAL, "ERRO!","Usuário/Senha inválidos!");
throw new ValidatorException(msg);
}
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
Usuario user = (Usuario) req.getSession().getAttribute("userLogged");
// The user has been logged !!!!
if (user != null || req.getRequestURL().toString().endsWith("login.jsf")) {
chain.doFilter(request, response);
} else {
// Ohh the user is not logged !!!!
resp.sendRedirect(req.getContextPath() + "login.jsf");
}
}
<filter>
<filter-name>AuthFilter</filter-name>
<filter-class>Filter.AuthFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AuthFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>