如何从过滤器中排除一个特定的.xhtml

问题描述

美好的一天,

我有一个过滤器,可以正常使用。问题在于,在此测试中,我被要求在创建过滤器之前没有遇到过某些问题,而现在它正在发生冲突。这是交易。我需要创建一个选项,当用户没有帐户时,该选项允许他们创建一个新帐户。不幸的是,我的过滤器是经过设计的,因此,如果任何.xhtml上都不存在会话,它将仅重定向到登录页面。我的问题是,如何从当前过滤器中排除特定的.xhtml文件?这是我的解决方案,但是,如果有人有其他建议,欢迎他们。

这是我的过滤器:

    @WebFilter(filterName = "AuthFilter",urlPatterns = { "*.xhtml" })
    public class AuthorizationFilter implements Filter {

public AuthorizationFilter() {
}

@Override
public void init(FilterConfig filterConfig) throws ServletException {

}

@Override
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException,ServletException {
    try {

        HttpServletRequest reqt = (HttpServletRequest) request;
        HttpServletResponse resp = (HttpServletResponse) response;
        HttpSession ses = reqt.getSession();
                    
                    System.err.println("Cache Filter- Called");
                    resp.setHeader("Pragma","no-cache");
                    resp.setHeader("Cache-Control","no-cache,no-store,must-revalidate"); 
                    resp.setDateHeader ("Expires",0);
                    
                    String reqURI = reqt.getRequestURI();
                                                        
        if (reqURI.indexOf("login/login_index.xhtml") >= 0
                || (ses != null && ses.getAttribute("username") != null)
                || reqURI.indexOf("/public/") >= 0
                || reqURI.contains("javax.faces.resource")){
            chain.doFilter(request,response);}
                    else{
                            
            resp.sendRedirect(reqt.getContextPath() + "/faces/login/login_index.xhtml");
                    }
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }
}

@Override
public void destroy() {

}

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)