2009-07-27 179 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中的授权和认证中借鉴一些想法。