JSF身份validation和授权

为JSF Web应用程序实现身份validation和授权的最佳方法是什么? 我还是希望使用基于容器的安全性,因为我需要调用需要主体的EJB。

我意识到基于表单的身份validation是与JSF的一次重大斗争,但是我可以使用PhaseListener或类似的程序登录来validation用户吗?

我还应该看看其他任何方法吗?

尝试查看博客,了解如何在JSF中使用JAAS。 这是如何使用JSF部署JAAS进行身份validation和授权的示例。

我希望它有所帮助。

您可以使用Spring Security框架,请参阅此处的说明http://ocpsoft.com/java/acegi-spring-security-jsf-login-page/

我使用JSF Seam并使用了Seam的内置身份validation和授权,并且发现它非常易于使用。

对于身份validation,您只需实现1方法, public boolean login(String username, a String password) { ... }并返回boolean。 然后,您可以将页面标记为“需要登录”,并且接缝会处理其余部分。

对于授权,Seam为您提供了一个@Restrict注释,您可以将其放在Controller或Service方法上,Seam会再次处理其余的事情。

高级授权:您还可以使用Seam处理更高级的授权,其中角色是动态的 – 例如,在公告板中,您是某些post的“作者”,但是“读者”或其他post,只需将您的@Restrict注释委派给Java方法。

我鼓励你看看Seam。 Seam只是JSF上的一层,所以从技术上讲,你仍然可以在JSF上运行。 如果出于某种原因你不能使用Seam,也许你可以从Seam如何处理JSF中的授权和身份validation中借鉴一些想法。

您可以使用Servlet 3.0 HttpServletRequest API,如JSF 2.0问题的答案中所示:

JSF 2.0简单登录页面