好的簡單問題。我有一個JSF應用程序,包含一個登錄頁面。問題是如果用戶加載登錄頁面,離開它一段時間,然後嘗試登錄會話過期,並引發ViewExpiredException。發生這種情況時,我可以重定向到登錄名,但這不是很順利。我怎樣才能讓這個流程在沒有額外嘗試的情況下正確登錄?jsf登錄超時
Q
jsf登錄超時
4
A
回答
6
更新
由於鑽嘴魚科的2.1.19/2.2.0您現在可以設置<f:view>
的瞬態屬性爲true:
<f:view transient="true">
Your regular content
</f:view>
你可以閱讀有關在Balusc's博客在這裏:
http://balusc.blogspot.com.br/2013/02/stateless-jsf.html
原始
如果您使用的Facelets,你可以創建自己的ViewHandler來處理這個問題:
public class LoginViewHandler extends FaceletViewHandler
{
public LoginViewHandler(ViewHandler viewHandler)
{
super(viewHandler);
}
@Override
public UIViewRoot restoreView(FacesContext ctx, String viewId)
{
UIViewRoot viewRoot = super.restoreView(ctx, viewId);
if (viewRoot == null && viewId.equals("/login.xhtml"))
{
// Work around Facelet issue
initialize(ctx);
viewRoot = super.createView(ctx, viewId);
ctx.setViewRoot(viewRoot);
try
{
buildView(ctx, viewRoot);
}
catch (IOException e)
{
log.log(Level.SEVERE, "Error building view", e);
}
}
return viewRoot;
}
}
更改「/login.xhtml」你的登錄頁面。這將檢查它是否可以恢復您的視圖,如果它不能,並且當前視圖是您的登錄頁面,它將爲您創建並構建視圖。
設置這在你的臉上-config.xml中如下:
<application>
<!-- snip -->
<view-handler>my.package.LoginViewHandler</view-handler>
</application>
如果你使用無Facelets的(即JSP)的JSF你可以嘗試具有類擴展ViewHandlerWrapper - 注意,buildView()將不可用。希望自己創建View()可以正確設置視圖,但我並不完全確定使用JSF/JSP。
0
夫婦略哈克解決方案:
- (非常哈克)使用
<meta http-equiv="refresh" content="5"/>
標籤每隔一段時間自動重新加載頁面。 - 使用JavaScript函數定期向服務器發送「ping」請求,以保持會話活動。
我們在工作中使用IceFaces,它會自動檢測您的會話何時到期,並顯示一個彈出窗口,提醒您注意事實。但由於某些原因,我們仍然在登錄頁面上遇到問題。
0
這聽起來像您的登錄頁面在會話範圍內,當它真的不需要。請求範圍對於登錄頁面應該沒問題(因爲在用戶登錄之前,實際上應該沒有會話中的任何內容)。一旦用戶登錄,您可能會收回此問題,但從此Phill的想法非常好。
0
使用jsp,您可以禁用該頁面的會話,包括此指令<%@ page session="false" %>
。 jsf必須有類似的東西。
相關問題
- 1. Iframe登錄超時
- 2. 如果用戶未登錄,Jsf會話超時處理
- 3. JSF登錄失敗
- 4. 增加Jenkins登錄超時
- 5. 增加登錄超時
- 6. 登錄會話超時
- 7. 要知道何時登錄超時
- 8. 登錄和註銷jsf
- 9. 在JSF中可選登錄
- 10. Glassfish登錄JSF頁面
- 11. jsf檢查用戶登錄
- 12. Laravel身份驗證登錄超時
- 13. 如何超時登錄ASP.NET MVC用戶?
- 14. ASP.net登錄在salesforce中超時
- 15. Azure AD登錄會話超時
- 16. 如何增加Azure ACS登錄超時
- 17. Typo3登錄錯誤或會話超時?
- 18. XPAGE超時和新的登錄
- 19. Azure Active Directory單一登錄超時
- 20. 會話超時在JSF
- 21. JSF捕獲會話超時
- 22. JSF Ajax導航超時
- 23. 登錄JSF休眠按鈕登錄沒有按牛逼回答
- 24. 使用Python請求登錄到使用jsf登錄的問題
- 25. JSF 2.0簡單登錄頁面
- 26. 簡單登錄shiro wildfly jsf和primefaces
- 27. 帶登錄組件的JSF頭?
- 28. 用戶使用JSF 2.0登錄
- 29. 使用JSF 2,1和Apache Tomcat登錄LDAP
- 30. 記住我自動登錄與JSF + JAAS
任何想法如何在JSF 2中做到這一點? – 2012-08-22 00:49:56