0

条件が失敗した場合に条件を確認した後、リクエストディスパッチャiamを使用して、他のページにリダイレクトします。そのページにリダイレクトしますが、cssはそのページに適用されません。なぜですか。

public class RolePrivilegeFilter implements Filter {
List<String> privilege = null;
private static final String notAuthorizedPath = "/home/notAuthorized.jsf";
@Override
public void destroy() {
log.info("filter finish");
}

@Override
public void doFilter(ServletRequest sRequest, ServletResponse sResponse, FilterChain filterChain) throws IOException, ServletException {
String smUser = null;
 try {
    HttpServletRequest request = (HttpServletRequest) sRequest;
    HttpServletResponse response = (HttpServletResponse) sResponse;
    HttpSession session = null;
    try {
        request = (HttpServletRequest) sRequest;
        smUser =  request.getHeader(EnvironmentBean.SESSION_ATTR_SM_USER);
        } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
        }
    if (rolePrivilege == null || rolePrivilege.isEmpty()) {
    rolePrivilege = new RolePrivilegeBuilderImpl().rolePrivilege("Smtest2");
    privilege filter bean is\t"+rolePrivilege);
    log.debug("After rolePrivilege: " + rolePrivilege);
    if (rolePrivilege != null && rolePrivilege.size() > 0 ) {
    if (session == null) {
        session = request.getSession(true);
    }
    session.setAttribute("privilege", rolePrivilege);

    } else {
             //This is the page iam  redirecting to. 
    System.out.println("role privilege not authorized page");
    RequestDispatcher rd = request.getRequestDispatcher(notAuthorizedPath);
                    rd.forward(request, response);
                    return;
           }
    } catch (Exception e) {
        e.printStackTrace();
        log.debug("Error in setting session attribute: " + e.getMessage());
    }
    log.debug("doFilter() finish");
    filterChain.doFilter(sRequest, sResponse);
}

@Override
public void init(FilterConfig arg0) throws ServletException {
    log.info("filter start");

}
}

問題は、iamがそのページにリダイレクトしているのに、背景画像が表示されないように、そのページへのcssが適用されていないことです。なぜそうなのですか。

4

1 に答える 1

1

どうやら、フィルターのURLパターンそのCSSファイルに対するブラウザーの要求と一致していたため、フィルターによってブロックされているようです。どうやらあなたはas/*か何かのような広すぎるURLパターンにフィルターをマッピングしたようです。

フィルタがこれらすべてのCSSファイル要求をバイパスすることを確認する必要があります。それに応じてフィルターのURLパターンを変更して、CSSファイル要求をバイパスする方法がない場合(たとえば、すべての制限されたリソースがあるフォルダー内の要求でのみ実行されるように変更/*する場合)、フィルターのコードを書き直してチェックを追加する必要がありますリクエストURIで。/app/*/app

このようなもの:

if (request.getRequestURI().endsWith(".css")) {
    chain.doFilter(request, response);
    return;
}

これにより、すべての*.cssリクエストがブロックされるのではなく渡されます。

于 2012-09-11T11:40:51.707 に答える