1

セッションの有効期限が切れ、メソッドが POST の場合、faces-redirect パラメータを URL に追加し、viewExpiredException を回避するためにブラウザがページをキャッシュしないようにするフィルタがありますが、機能しません。それでもその例外が発生します。

これが私のコードです:

                if ( "POST".equalsIgnoreCase(request.getMethod()) ) {
                        log.info("POST --> Evitar ViewExpiredException de JSF");
                        log.info("Hacer que el navegador no cachee la página");
                        response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
                        response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
                        response.setDateHeader("Expires", 0); // Proxies.
                        log.info("Redirigir a la página con el parámetro 'faces-redirect'");
                        String pagRedirect = anadirFacesRedirect(pagSolicitada);
                        log.info("Página con 'faces-redirect' = "+pagRedirect);
                        log.info("URI con 'faces-redirect' = "+request.getContextPath()+pagRedirect);
                        response.sendRedirect(request.getContextPath()+pagRedirect);
                        chain.doFilter(request, response);
                        return;
                }

「anadirFacesRedirect」メソッドは「faces-redirect=true」を追加します。問題なく動作します。デバッグしてログを確認しましたが、sendRedirect パラメータは問題ありません。

このコードを Spring Security フィルターに入れました。

それが問題なのか (Spring Security のため)、それともコードに何か問題があるのか​​ わかりません。

ありがとうございました。

更新: Spring Security のフィルターチェーンの後に実行する webfilter に入れたので、Spring Security の問題ではないことを既に確認しましたが、それでも機能せず、viewExpiredException がスローされます。

どうしてこれなの?リダイレクトを強制し、ブラウザがキャッシュ ページを使用しないようにしました。

4

0 に答える 0