如何在 JSF 中使用会话实现多用户登录

Posted

技术标签:

【中文标题】如何在 JSF 中使用会话实现多用户登录【英文标题】:How to implement multiple user Login using sessions in JSF 【发布时间】:2012-06-19 09:08:43 【问题描述】:

我是 JSF 的新手,我正在开发 Web 项目。

    我想实现多用户登录的登录系统。就像 Facebook 或您提供用户名和密码并访问您的帐户的任何其他网站一样。

    我想要的另一件事是,如果用户没有登录并且他想要访问(受限)url,他必须被重定向到登录页面。

我什至不知道从哪里开始,但是我知道如何在 Servlet 中进行“会话跟踪”。

谁能给我推荐一个很好的例子或通过示例代码帮助我。

【问题讨论】:

【参考方案1】:

据我所知JSF没有特殊的认证功能。

编写您自己的身份验证。只适用于非常简单的场景(没有基于角色的授权等)
    写一个Filter来控制页面访问(检查你的会话。如果用户没有登录,将他重定向到登录页面) 构建登录页面,检查用户凭据并设置登录标志 构建注销方法以清除用户会话中的标志
使用容器管理安全Java EE 5 Tutorial 使用第三方库,如Apache Shiro 或Spring Security

【讨论】:

【参考方案2】:

    将登录数据保存在会话范围的 Bean 中。 Here 你有一个完整的 JSF 教程,其中包含一些示例和源代码。查看有关 Managed Beans I 的部分。

    实现该功能的基本方法是在用户访问页面时检查用户是否已登录(会话中存储了一个有效的登录 Bean)。如果不是,请重定向到登录页面。 This 是关于检查用户是否使用 Phase Listeners 登录

【讨论】:

不错的 jsf-only 示例。但是相位侦听器还可以保护其他网络资源,例如 pdf、zip 或图像文件?

以上是关于如何在 JSF 中使用会话实现多用户登录的主要内容,如果未能解决你的问题,请参考以下文章

JSF 登录过滤器,会话为空

返回在 jsf 中销毁的会话的欢迎页面 [重复]

在 JSF 登录期间何时创建会话?

检查会话是不是存在 JSF

当他使用相同的凭据登录两次时如何使用户会话无效

我应该如何从会话中检索登录用户并将其传递给我的业务层?