JSF 表單提交時會話過期授權重定向失敗
僅當頁面導航時,您的JSF 應用程式才會在會話過期時重定向到登入頁面發生。但是,當提交 JSF 表單時,問題並未解決。此問題可能源自於您的自訂 servlet 中對 AJAX 請求的錯誤處理。
要解決此問題,請考慮使用 servlet 過濾器進行授權檢查,而不是建立自訂 servlet。 Servlet 過濾器更適合此任務。
以下是授權過濾器的範例實作:
<code class="java">@WebFilter("/*") public class AuthorizationFilter implements Filter { // Prepare XML response to redirect on AJAX requests private static final String AJAX_REDIRECT_XML = ... @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException { HttpServletRequest request = ...; HttpServletResponse response = ...; HttpSession session = ...; String loginURL = ...; boolean loggedIn = ...; boolean loginRequest = ...; boolean resourceRequest = ...; boolean ajaxRequest = ...; // Allow access for logged-in users, login requests, resource requests, and AJAX requests if (loggedIn || loginRequest || resourceRequest) { chain.doFilter(request, response); } // For AJAX requests, return an XML response instructing the JSF engine to redirect else if (ajaxRequest) { ... } // For non-AJAX requests, perform a standard redirect else { response.sendRedirect(loginURL); } } }</code>
此篩選器檢查使用者的登入狀態和請求類型。如果使用者未登入或要求不是 AJAX 請求,則執行重新導向。對於 AJAX 請求,會傳回一個特殊的 XML 回應來指示 JSF 引擎傳送重新導向。
透過使用 servlet 過濾器適當處理 AJAX 請求,您可以確保會話過期時的授權重定向正確工作頁面導覽和表單提交。
以上是為什麼會話過期後 JSF 表單提交的授權重定向失敗以及如何修復?的詳細內容。更多資訊請關注PHP中文網其他相關文章!