2010-08-06 78 views
1

我正在製作一個Web應用程序,其中某些頁面受到登錄保護。我創建了一個JDBC安全領域GlassFish中對於這一點,並使用窗體身份驗證JSF轉發和安全約束問題

我使用的導航規則,將用戶重定向到該網站的安全區域(該方法described here類似):

<navigation-case> 
     <from-outcome>showResults</from-outcome> 
     <to-view-id>/SecureUser/Reservation/New/AvailableResults.xhtml</to-view-id> 
     <redirect/> 
</navigation-case> 
(etc...) 

這工作正常。但是,如果我在導航案例中跳過重定向標記,那麼該頁面的URL不會更改。在這種情況下,未經身份驗證的用戶可以訪問受保護的頁面。

什麼是最好的方式去做這件事?確保頁面被重定向而不是轉發足夠好?我應該在每個安全頁面中編寫代碼來檢查用戶是否已登錄?

回答

0

使用POST進行頁面到頁面導航被認爲是不好的做法。不要使用JSF h:commandLinkh:commandButton進行簡單的頁面到頁面導航。兩者都會生成一個POST表單,這對於簡單的導航來說是完全不必要的,而且不適合SEO。取而代之的是使用h:linkh:button。它分別呈現普通的香草GET鏈接和GET表單。

如果您無論如何都要提交POST表單並且結果頁面與表單頁面不同,那麼使用PRG (Post-Redirect-Get) pattern被認爲是最佳做法。您可以使用<redirect/>