2010-02-22 55 views
4

我搜索了如何在JSF Web项目中进行用户身份验证的最佳方式。我发现this非常好的例子来自BalusC在stockoverflow(顺便说一句谢谢BalusC)。但我不明白这个系统。JSF 2.0上的用户身份验证的最佳做法?

我写了一个注册页面。注册后,用户进入我的数据库。但是,我可以使用j_security_check从我的数据库中检查用户?

在我的web项目中,我没有用户和非用户的站点。当用户进入时,他会看到更多选项,例如他可以发布文本。我可以检查这个吗?我可以保存用户类与用户数据在登录和检查:

if(user != null){ 
<h:inputText value="User Only Text" id="text" /> 
} 

但我认为这种方式不是很优雅。另外我的问题是什么是使用户登录的最佳方式,并显示有效用户在网页上比非用户更多的选项。

谢谢你,对不起我的英语不好。

回答

3

但是我该如何使用j_security_check从我的数据库中检查用户?

This article解释了如何将基于HTTP FORM的身份验证与Glassfish中的JDBC领域结合使用。

什么是最好的方式使用户登录,并显示有效的用户在网页上比非用户更多的选项。

基本上,您需要检查用户是否有适当的角色来查看“选项”。看看ExternalContext#isUserInRole(String)

+0

谢谢,我会试试看。 – ThreeFingerMark

+0

@Pascal:你想谈谈什么时候可以从基于容器的安全转移到诸如shiro或其他替代方案?在这里看到更多的重点问题:http://stackoverflow.com/questions/7782720/when-to-move-from-container-managed-security-to-alternatives-like-apache-shiro –

4

只需声明user作为会话作用域管理bean并使用组件的rendered属性。

<h:inputText value="User Only Text" id="text" rendered="#{user != null}" /> 
+0

而我怎么说,用户类登录后加载到会话范围内? – ThreeFingerMark

+0

要么使用'UserManager'会话Bean,而要使用'login()'方法和'user'属性,以便使用'#{userManager.user!= null}',或者通过执行'externalContext.getSessionMap()。put (“user”,user)'在bean的登录方法中。 – BalusC

+0

感谢您的详细解答。我会试试这个。 – ThreeFingerMark