現狀:JSF Ajax和普通重定向到登錄並回preveious頁
如果任何會話超時發生時,在FacesAjaxAwareUserFilter
redirectToLogin
功能。 將被執行。從那裏我可以重定向到我需要的任何頁面。我在所有情況下都獲得URI。 它的所有工作都很好,非常感謝BalusC。 :)
現在的第二部分,這使得問題
重定向到登錄並回到前一個頁面。
對於如:
第5頁 ---->登錄 ------>第5頁
我有將redirect uri附加到登錄uri並從bean中檢索值。
但問題是,我有2頁之前的用戶登錄。登錄模式選擇頁面(即;谷歌身份驗證或默認登錄)和讀取用戶名和密碼的頁面。
我怎樣才能通過兩個頁面的重定向URI
。
這是我用來在Ajax超時和正常會話超時重定向的代碼。使用
類FacesAjaxAwareUserFilter
if ("partial/ajax".equals(request.getHeader("Faces-Request"))) {
res.setContentType("text/xml");
res.setCharacterEncoding("UTF-8");
res.getWriter().printf(FACES_REDIRECT_XML, request.getContextPath() + getLoginUrl()+"?redirectUrlPattern="+request.getRequestURI());
}
else {
if (request.getRequestedSessionId()!=null && (!SecurityUtils.getSubject().isAuthenticated() || !request.isRequestedSessionIdValid())) {
response.sendRedirect(getLoginUrl()+"?redirectUrlPattern="+request.getRequestURI());
return;
}
super.redirectToLogin(req, res);
}
方法是在Omniface
FullAjaxExceptionHandlerFactory
。
我已經使用了將值附加到URI的方法,但它無法確定會話是否過期或會話未創建(當用戶首先登錄時)。
問題代碼
if (request.getRequestedSessionId()!=null && (!SecurityUtils.getSubject().isAuthenticated() || !request.isRequestedSessionIdValid()))
我正在尋找一種方法來確定從登錄之前創建新的會話過期的會話。
希望以更好的方式實現這一點。
一種不會在當前URI附加重定向URL的方法是最受歡迎的。
也許你在BaluC有錯字,它應該是BalusC。您可以創建另外1個過濾器來防止會話過期情況。 –
防止會話過期並不是我猜的好方法.. !!在我的問題處理會話超時完成。重定向現在是問題的一部分。 – Dileep