为JSF Web应用程序实现身份验证和授权的最佳方法是什么?我还是希望使用基于容器的安全性,因为我需要调用需要主体的EJB。
我意识到基于表单的身份验证是与JSF的主要争论,但我是否可以使用PhaseListener或类似的程序登录来验证用户?
我应该看一下其他任何方法吗?
答案 0 :(得分:4)
答案 1 :(得分:3)
您可以使用Spring Security框架,请参阅此处的说明http://ocpsoft.com/java/acegi-spring-security-jsf-login-page/
答案 2 :(得分: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中的授权和身份验证中借用一些想法。
答案 3 :(得分:2)
您可以使用Servlet 3.0 HttpServletRequest API,如JSF 2.0问题的答案中所示: