0

これは私のフィルター コードで、その下のコードはdoPost()私のサーブレットのメソッドです。ログアウト機能を実装しようとしています。ログアウト ボタンをクリックすると、制御がサーブレットに送信され、ログイン ページにリダイレクトされます。しかし、私はそれで問題を抱えています。ブラウザーは、ページが適切にリダイレクトされていませんと表示されます。私はこのトピックに関する SO のすべての質問を調べてきましたが、何も役に立たないようです。また、ログアウトした後でもユーザーがページに戻る戻るボタンの問題があります。誰かが私が間違っていることを説明できますか?

LogoutFilter.java

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) res;

    HttpSession session = request.getSession(false);         
     if (session == null || session.getAttribute("loginUsername") == null) {
    response.sendRedirect("login.jsp"); // No logged-in user found, so redirect to login page.
} else {
    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);
    chain.doFilter(req, res);  
}
}

LogoutServlet.java

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            request.getSession().invalidate();
            RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
            rd.forward(request, response);

}

編集:また、プロジェクトからページのランダムな URL を入力すると、ユーザーがログインしなくても表示されます。そうならないようにするにはどうしたらいいでしょうか?

更新:いくつかの検証を使用し、それに応じてログインページにリダイレクトすることで、ランダムな URL ページが表示される問題を解決しました。ログアウト機能は動作しています。ただし、[戻る] ボタンを押すと (必要に応じて) ログイン ページ自体にリダイレクトされますが、[戻る] ボタンをもう一度押すと、ブラウザーにドキュメントの期限切れメッセージが表示され、更新を押すと、安全なページが再び表示されます。ここで何が問題なのか誰か教えてもらえますか?

4

1 に答える 1