JSF过滤器的问题

时间:2014-04-17 11:19:30

标签: java jsf

早上好,JSF中的过滤器效果很好,用户会话到期时用它来重定向页面。仅在会话结束时发生,如果我单击ajax函数,则不会重定向。与会话到期时一样,它会重定向到主页。

我的过滤器就像这样:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest req = (HttpServletRequest) request;
    HttpSession session = req.getSession();
    Usuario user = (Usuario) session.getAttribute("usuarioLogado");
    Acesso ac = new Acesso();
    String uri = req.getRequestURI();
    //pegar Browser do usuario
    pegarBrowser(req);
    //verifica se requisição esta dentro do diretorio /telas, se não libera o fluxo
    if (!uri.contains("telas")) {
        chain.doFilter(request, response);
    } else {
        //verifica se usuario esta logado, e se o diretorio acessado é /telas
        if (session.getAttribute("usuarioLogado") != null && uri.contains("telas")) {
            Long idAcesso = null;
            try {
                idAcesso = user.getAcesso().getId();
            } catch (Exception e) {
                HttpServletResponse res = (HttpServletResponse) response;
                res.sendRedirect("/erro/expirado.xhtml");
            }

            if (controle == false) {
            }
            try {
                dao = new ViewDAO();
                acDAO = new AcessoDAO();
                role = dao.buscarObjeto("end", uri);
                dao = null;
                ac = acDAO.buscarObjeto("id", idAcesso);
                acDAO = null;

            } catch (Exception ex) {
                Logger.getLogger(filtroAcessoJSF.class.getName()).log(Level.SEVERE, null, ex);
            }

            try {
                String regraURI = role.getGrupo();
                SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
                String dataHojestring = sdf.format(new Date());
                java.sql.Date dataHoje;
                dataHoje = new java.sql.Date(sdf.parse(dataHojestring).getTime());
                Date limite = user.getDataLimiteAcesso();
                Boolean teste = dataHoje.before(limite);

                if (dataHoje.before(limite)) {
                    if (regraURI.contains(ac.getNome())) {
                        chain.doFilter(request, response);
                    } else {
                        HttpServletResponse res = (HttpServletResponse) response;
                        res.sendRedirect("/erro/negado.xhtml");
                    }
                } else {

                    if (!uri.equals("/erro/negadoData.xhtml")) {
                        HttpServletResponse res = (HttpServletResponse) response;
                        res.sendRedirect("/erro/negadoData.xhtml");
                    }
                }
            } catch (Exception ex) {
                Logger.getLogger(filtroAcessoJSF.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            if (uri.contains("xml.xhtml")) {
                chain.doFilter(request, response);
            }
            HttpServletResponse res = (HttpServletResponse) response;
            res.sendRedirect("/index.xhtml");

行:res.sendRedirect(" / index.xhtml");

当ajax调用是,(我认为,不确定)它不重定向任何人都可以帮忙吗?谢谢

0 个答案:

没有答案