2010-09-20 189 views
3

我正在開發Java EE應用程序(JSF2 + richfaces + Facelets + Tomcat)。 使用JSF時執行驗證的最佳方式是什麼? 還是應該讓我自己做?JSF身份驗證

+0

供參考:拼寫爲「認證」而不是「認證」。 – Migol 2010-09-20 12:36:11

+0

更正了它... – 2010-09-20 13:08:01

+0

重複的http://stackoverflow.com/questions/9965708 – BalusC 2016-06-07 07:26:34

回答

6

人們通常之間挑選(排名不分先後):

JAAS (這是Java/Java EE默認安全框架)
春季安全
定製安全

我從來沒有使用Spring Security的,但文件是巨大的,我放棄了,一旦因爲時間的約束。 JAAS具有簡單的優點,並且可以與Tomcat一起使用。

我也看到了構建在JAAS之上的自定義安全性。

你真正需要做的是找出你將在你的應用程序中特別需要的東西,並檢查最適合你需求的框架。如果你只需要身份驗證(用戶登錄),我會說JAAS是最簡單的方法,因爲它不是應用程序入侵,如果你還沒有使用,你不需要添加Spring依賴關係它。

+1

請注意,JAAS本身是***不是一個Java EE默認安全框架。 JAAS是Java SE中的一個安全性基礎,但並未詳細說明它與Java EE安全性概念的對應關係,而這些概念實際上有時會有很大不同。有關更多詳細信息,請參閱:http://java.sys-con.com/node/1002315 – 2013-04-15 06:57:30

0

JBoss Seam非常好地集成了EJB 3,Facelets,JSF和hibernate。還提供數據驗證和一些安全性的東西。如果你使用它的所有功能,它真的很甜蜜。如果你試圖從中選擇一些特定的東西,那麼它仍然很酷,但是你有幾個解決方法。但是我對Seam迄今爲止所看到的東西印象深刻。

0

除了上述框架外,還有Seam Security通過擴展與CDI很好地集成。

1

我認爲萊昂納多回答正確,但您也可以考慮Central Authentication Service(CAS)企業安全。配置稍微複雜一些,但好處是巨大的。它還支持從LDAP到NTLM的大量現成的認證機制。 CAS還提供了自定義身份驗證的擴展。

如果您選擇使用Java EE容器,並希望使用基於表單的身份驗證,我已經出版了幾個例子爲使用JSF 1.2和2.0以及j_security_check

此外,Servlet 3.0 API還提供基於容器的登錄和身份驗證,通過HttpServletRequest API。

0

您可以嘗試Apache Shiro,它提供身份驗證,授權等許多功能。

0

對於簡單驗證,一個非常簡單的方法是使用JSTL檢查模板中的有效用戶對象,如果不是,則顯示登錄表單。 爲〔實施例,假設你的模板是webapp/WEB-INF/templates/default.xhtml,在模板中:

<html...> 
. 
. 
<h:body> 
<c:if test="#{mbSecurity.validUser}"> 
. 
. authenticated template sections goes here 
. 
</c:if> 

<c:if test="#{not mbSecurity.validUser}"> 
    <ui:include src="/WEB-INF/inc/login-form.xhtml" /> 
</c:if> 
</h:body> 
</html> 

優勢:零隻依賴&零配置,也如果會話過期,在登錄後,用戶將返回到原來的網頁,其中他在。