2009-07-27 178 views
14

要實現JSF Web應用程序的身份驗證和授權,最好的方法是什麼?最好我仍然想使用基於容器的安全性,因爲我需要調用需要委託人的EJB。JSF身份驗證和授權

我意識到基於表單的身份驗證是與JSF的一次重大斗爭,但是我可以使用PhaseListener或類似的東西與程序登錄一起驗證用戶身份嗎?

其他任何我應該看看的方法?

+0

可以讓我們知道什麼是你的選擇? – 2009-11-26 20:38:11

+0

相關:http://stackoverflow.com/questions/2206911/best-way-for-user-authentication-on-javaee-6-using-jsf-2-0/2207147#2207147和http://stackoverflow.com/questions/6189536/program-control-login-with-servlet-3-0/6189810#6189810 – BalusC 2011-06-03 13:47:05

回答

3

您可以使用Spring Security框架說明,請參閱這裏http://ocpsoft.com/java/acegi-spring-security-jsf-login-page/

+0

感謝您的建議。春季安全可以在Spring框架之外使用嗎?目前我對Facelets有直接的JSF,並且我想避免對Spring的額外依賴。 – Zecrates 2009-07-28 09:29:52

+0

它取決於幾個彈簧模塊 - web,core和其他幾個(例如,如果將用戶數據保存在數據庫中,則爲jdbc)。不過,您不必在春天爲您的應用程序建立基礎,只需將其視爲外部庫。 – 2009-07-28 10:33:37

4

嘗試檢查出的博客using JAAS with JSF. 這是如何將JAAS與JSF進行身份驗證和授權部署的例子。

我希望它有幫助。

3

我使用JSF Seam和已經使用Seam的內置的身份驗證和授權,並發現它非常容易使用。

對於驗證,您只需實現1個方法,public boolean login(String username, a String password) { ... }並返回布爾值。然後,您可以將頁面標記爲「需要登錄」,然後縫合處理其餘部分。

對於授權,Seam給你一個@Restrict註解,你可以把它放在你的Controller或Service方法上,Seam負責其餘部分。

高級授權:您還可以處理角色動態變化的更多advanced authorization with Seam - 例如,在公告牌中,您只是將某些帖子的「作者」,而不是「讀者」或其他帖子,只需將您的@Restrict註釋委派給Java方法即可。

我會鼓勵你看看Seam。 Seam只是JSF之上的一個層,所以從技術上講,你仍然會在JSF上運行。如果由於某種原因你不能使用Seam,也許你可以從Seam如何處理JSF中的授權和認證中借鑑一些想法。