JSF 2.0中用户认证的最佳实践是什么?

4
我正在寻找在我的JSF Web项目中实现用户认证的最佳方法。我在stackoverflow上找到了BalusC的这个非常好的示例(顺便感谢BalusC)。但是我不理解这个系统。
我已经编写了一个注册页面。注册后,用户会被添加到我的数据库中。但是我如何使用j_security_check来检查来自我的数据库的用户?
在我的Web项目中,我没有针对用户和非用户的网站。当用户登录时,他可以看到更多选项,例如他可以发布文本。我该如何检查这个?我可以在登录时保存包含用户数据的用户类并检查吗?
if(user != null){
 <h:inputText value="User Only Text" id="text"  />
}

但是我认为这种方式并不太优雅。我的问题是,如何最好地让用户登录,并在网页上展示比非用户更多的有效选项。

谢谢您,对我的英语不好感到抱歉。

2个回答

5

只需声明user为会话作用域管理的Bean,然后利用组件的rendered属性即可。

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

我如何表达User类在登录后被加载到会话作用域中? - ThreeFingerMark
可以使用带有login()方法和user属性的UserManager会话bean,以便您可以使用#{userManager.user != null},或者在bean的登录方法中执行externalContext.getSessionMap().put("user", user) - BalusC

3

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

这篇文章解释了如何在Glassfish中使用基于HTTP FORM的身份验证以及JDBC领域。

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

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


@Pascal:您是否想谈一下何时从基于容器的安全性转移到诸如shiro等替代方案?请参见更专注的问题:https://dev59.com/VWsz5IYBdhLWcg3wmpFb - Rajat Gupta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接