2010-09-20 190 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> 

优势:零只依赖&零配置,也如果会话过期,在登录后,用户将返回到原来的网页,其中他在。