problemas com filter - JSF/Hibernate

06/02/2013

1

Bom dia!! Fiz recentemente assinatura de Java e precisei de alguns tutoriais de vcs de filter, porém estou tendo problemas...alguem poderia me ajudar?

Eu consigo logar com usuario e senha q digito, mas o filter não está funcionando. Eu consigo ir direto para página index.jsf sendo que nao era pra deixar
Ou até mesmo se eu logo e depois volto para pagina de login e volto para index de novo, ele aceita .. ou seja..nao está filtrando

Alguma ajuda?

[b]loginBean[/b]

@ManagedBean(name="loginBean")
@SessionScoped
public class LoginBean {
    
    private Usuario usuario;

    public LoginBean() {
        
        if (this.usuario == null) {
            this.usuario = new Usuario();
        }
    }
        
    public void redirecionar() throws IOException{    
       FacesContext faces = FacesContext.getCurrentInstance();
        ExternalContext context = faces.getExternalContext();
        context.redirect("/ControleChanges/index.jsf");   
    }  
    
    public void login(ActionEvent actionEvent) throws IOException {
        RequestContext context = RequestContext.getCurrentInstance();
        FacesMessage msg = null;
        boolean loggedIn = false;
        
        UsuarioDao usuarioDao = new UsuarioDaoImpl();
        usuario = usuarioDao.buscarPorUsuario(usuario);

        if (usuario != null) {
            loggedIn = true;
            FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("user", "ok");
            redirecionar();
            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Welcome", usuario.getUsername()); //"Usuario"
        } else {
            loggedIn = false;
            msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Login Error", "Invalid credentials");
        }

        FacesContext.getCurrentInstance().addMessage(null, msg);
        context.addCallbackParam("loggedIn", loggedIn);
    }

    public Usuario getUsuario() {
        if (usuario == null){
            usuario = new Usuario();
        }
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }
    
    
}


[b]UsuarioDaoImpl[/b]

public class UsuarioDaoImpl implements UsuarioDao {
   
    @Override
    public Usuario buscarPorUsuario(Usuario usuario) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        String sql = "select u from Usuario u where username=:user and password=:pass";
        Query query = session.createQuery(sql);
        query.setString("user", usuario.getUsername());
        query.setString("pass", usuario.getPassword());
        return (Usuario) query.uniqueResult();
    }
}


[b]AuthFilter[/b]

public class AuthFilter implements Filter {

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest rq = (HttpServletRequest) request;
        HttpServletResponse rp = (HttpServletResponse) response;
        boolean auth = rq.getSession().getAttribute("user") != null;

        if (!auth && !rq.getRequestURL().toString().contains("login.jsf")) {
            rp.sendRedirect(rq.getContextPath() + "/login.jsf");
        } else {

            try {
                chain.doFilter(request, response);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public void destroy() {
    }

    public void init(FilterConfig config) throws ServletException {
    }
}
Responder

Posts

14/02/2013

Vanessa Fortes

Já me deparei com este problema, mas quando eu fechava meu navegador e abria novamente não acessava a nenhuma página sem estar logado.
Faça esse teste e veja se funciona, porque ai não é problema do filter, é nas politicas de privacidade do navegador.
Responder