0

jasig cas ログアウトに問題があります。以下の logout メソッドを呼び出そうとすると、次のエラーが発生します。

HTTP Status 500 - Cannot create a session after the response has been committed. javax.servlet.ServletException: Cannot create a session after the response has been committed

public String logout() {

Logger logger = Logger.getLogger(this.getClass().getName());

    ExternalContext extCtx = FacesContext.getCurrentInstance()
            .getExternalContext();

    HttpServletResponse response = (HttpServletResponse) extCtx
            .getResponse();

    String casLogoutURL = extCtx.getInitParameter("casLogoutURL");

    String serverName = extCtx.getInitParameter("serverName");

    try {

        extCtx.invalidateSession();
        logger.debug("Session Destroyed!");

        response.sendRedirect(casLogoutURL + "?service="
                + URLEncoder.encode(serverName, "UTF-8"));

        logger.debug("Logging out user...");

    } catch (IOException e) {
        logger.error("Impossible execute redirect after logout - CAS URL SERVER UNREACHABLE");
        e.printStackTrace();
    }

    return null;
}

After redirect 関数はライフ サイクルを壊さないため、呼び出しページはリターン後に処理されることがわかりました。セッションを破棄して CAS ログアウト ページに移動します。この問題を解決するにはどうすればよいですか?

4

0 に答える 0