0

ユーザーがログインしているかどうかをチェックし、前のページをキャッシュしないフィルターを使用しています。このためのコードは次のようなものです、

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
        throws IOException, ServletException {
    ....
    if (isRegisteredUser.equalsIgnoreCase(("1"))) {

        sessionID = UUID.randomUUID().toString();

        session.setMaxInactiveInterval(1800); 

        Cookie userCookie = new Cookie("userCookie", "loginUser");
        userCookie.setPath("/");
        httpServletResponse.addCookie(userCookie);

        Cookie sessionCookie = new Cookie("WITSessionCookie", sessionID);
        sessionCookie.setMaxAge(60*30);  
        sessionCookie.setPath("/");    
        httpServletResponse.addCookie(sessionCookie);

        if (!httpServletRequest.getRequestURI().startsWith(httpServletRequest.getContextPath() + ResourceHandler.RESOURCE_IDENTIFIER)) { // Skip JSF resources (CSS/JS/Images/etc)
            httpServletResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
            httpServletResponse.setHeader("Pragma", "no-cache"); // HTTP 1.0.
            httpServletResponse.setDateHeader("Expires", 0); // Proxies.
        }

        filterChain.doFilter(httpServletRequest, httpServletResponse);

    }
    ...

} //end of doFilter()

しかし、問題は、いずれかのページのユーザーがいずれかのボタンまたはリンクをクリックし、そのアクションに対してnullを返し、次にブラウザーの戻るボタンをクリックすると、ページが期限切れになることを示します。どうすればこれを防ぐことができますか?ページがキャッシュされていないのは問題ありませんが、ボタンまたはリンクをクリックしてそのアクションに対してnullを返すと、ページが期限切れになるのはなぜですか?
ありがとう

4

1 に答える 1

0

これは、エンドユーザーがブラウザにキャッシュされていないPOSTリクエストを再送信しようとした場合の、正常で指定された動作です。post-redirect-getパターンを実装する必要があります。アクションメソッドで宛先ページにリダイレクトを送信します。または、代わりにajax送信にします。ちなみに、戻るかどうかで同じビューに戻るかどうかは関係ありnullません。

于 2012-04-19T11:54:24.697 に答える