2010-05-23 24 views
1

我是JSF的新手,並且遇到了一些有關在那裏組織用戶身份驗證的問題。JSF中的用戶表單身份驗證

1)如何將註冊用戶重定向到歡迎頁面(例如welcome.xhtml)?我聽說過使用過濾器或導航規則標記,但我沒有找到它的工作原理的完整教程。

2)我怎樣才能告訴服務器,未經授權的用戶不僅可以訪問登錄頁面,而且還可以訪問註冊頁面?有沒有模擬ASP.NET web.config標籤或類似的東西?

+1

答案取決於您對用戶進行身份驗證的方式。容器託管或Web應用程序(本土)管理? – BalusC 2010-05-23 12:16:34

+0

Webapp。 我的任務就是在JSF中創建一個示例站點,並具有註冊能力並將用戶登錄到某個「helloworld」頁面,其中用戶數據存儲在mysql數據庫中。 – Proton 2010-05-23 13:38:36

回答

2

要求1)的解決方案已通過要求2)的解決方案實現。您只需讓用戶直接轉到該網址即可。如果用戶畢竟未登錄,則將其重定向到註冊/登錄頁面。這就是它通常的工作原理。

您需要實施Filter,它會在與受保護頁面匹配的url-pattern上進行偵聽。例如。 /secured/*/protected/*等。在doFilter()方法中,您只需檢查當前會話中是否存在登錄的User並進行相應處理。這是一個基本開球例如:

if (((HttpServletRequest) request).getSession().getAttribute("user") == null) { 
    // Not logged in, redirect to login page. 
    response.sendRedirect("login.jsf"); 
} else { 
    // Logged in, just continue with request. 
    chain.doFilter(request, response); 
} 

爲了得到它與J​​SF合作,只知道JSF存儲會話範圍的管理豆類與託管bean名作爲關鍵字的HttpSession屬性的事實。

+0

如果像我一樣,你正在尋找一個完整的「過濾器」例子看看這個鏈接:http://thierrywasyl.wordpress.com/2009/06/22/create-your-own-filter-in-jsf。本文演示如何使用JSF輕鬆創建身份驗證方案。 – Stephan 2012-05-07 09:06:13