2011-06-06 44 views
0

我在實現我的JSF應用程序的自動登錄功能時遇到了問題,該應用程序正在從JSP &基於servlet的體系結構中獲得保護。根據Cookie的自動登錄jsf

我使用LoginBean支持jsf頁面,並使用構造方法來檢查包含用戶信息的cookie是否存在,以及是否自動打開會話並將用戶重定向到主頁面。

自動登錄永遠不會發生,用戶始終保持在登錄表單的前面。我應該怎麼做才能使它工作?

+0

當你說「自動登錄永不發生」你的意思是說構造函數沒有被調用?然而,調用構造函數 – 2011-06-06 10:36:28

+0

時,如果沒有提交表單,則不會導航到「已登錄」頁面。我試圖實現的是,如果cookie存在,用戶會自動重定向到「登錄」頁面。 – Skyhan 2011-06-06 11:08:15

回答

1

這是一個應該工作的選項。一旦你確定它們是有效的,你可以這樣做:

final ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext(); 

try { 
    HttpServletResponse response = (HttpServletResponse) externalContext.getResponse(); 

    if (!response.isCommitted()) { 
     externalContext.redirect("loggedin.xhtml"); 
    } 
} catch (IOException ex) { 
    // log etc. 
} 
+0

謝謝你的建議,戴夫。我應該在哪裏放這段代碼?在託管bean或servlet過濾器內部嗎? – Skyhan 2011-06-06 11:59:34

+0

在您決定擁有一個有效的cookie後,您可以將它放入Bean的構造器中。 – 2011-06-06 12:06:42

+0

謝謝戴夫。它似乎工作,但我有一個問題:在response.isCommitted()條件下執行重定向與不檢查響應是否被提交有什麼區別? – Skyhan 2011-06-09 12:21:46