2010-04-06 72 views
0

我希望登錄後必須向用戶顯示一個頁面。但是,如果我們使用該鏈接,則可以看到該頁面及其內容,但唯一的事情是它不會獲取用戶數據。該做什麼來防止這種情況。在這種情況下可以做些什麼?如何限制用戶無法看到網頁與登錄網站?

回答

2

可以聲明一個PhaseListener重定向到哪裏到主頁代替用戶未登錄

public void afterPhase(PhaseEvent evt) { 

    User user = 
     evt.getFacesContext().getExternalContext().getSessionMap().get(USER_KEY); 

    if (user == null) { 
     FacesContext.getExternalContext().redirect("home.xhtml"); 
    } 
} 

相位聽者可以全局定義的,或者在視圖級與:

<f:view afterPhase="#{bean.afterPhase}">...</f:view> 

(Facelets中的屬性稱爲afterPhaseListener

+0

我想你寧願想如果'user'是重定向** **不能登錄。 – BalusC 2010-04-06 11:32:48

+0

的確..固定。 – Bozho 2010-04-06 11:40:49

0

我對JSF不熟悉,或者它內置了認證/授權。但是您應該能夠直接在您的Web服務器上應用認證/訪問規則。

1

使用ServletFilter檢查Session中是否存在UserData。
如果「是:。然後別的前進着錯誤頁

另一種選擇是使用在標籤上的rendered屬性檢查的UserData對象的存在