【问题标题】:Apache MyFaces 2.0 authentication and authorizationApache MyFaces 2.0 身份验证和授权
【发布时间】:2012-04-02 01:06:29
【问题描述】:

我需要创建一个具有登录系统的 webapp。 用户应针对数据库进行身份验证。 我想在会话中保存用户角色 - 还是有其他(更好的)方法?

此外,还有供用户访问的区域。 宾客区, 用户区, 管理区域。

现在的问题是。 如何使用 jsf2.0 轻松实现授权? 我不想在每个网站上进行测试,是否允许用户访问该网站。

web.xml 或 faces-config.xml 中是否有测试用例的配置?

谁能给我一个教程或示例代码?

感谢和最好的问候 投票

【问题讨论】:

  • Websphere 应用服务器 8.0
  • "我不想在每个站点上测试,是否允许用户访问站点。"您能否详细说明“每个站点”,您是否正在寻找多个站点的单点身份验证?还是您的意思是检查每个页面/链接??

标签: java authentication jsf-2 authorization


【解决方案1】:

您可以尝试this 方法,它使用 PhaseListener 检查用户是否有权在 RESTORE_VIEW 阶段访问当前站点。它很容易实现,并且可以在不同服务器之间移植(与领域相反)

【讨论】:

  • 谢谢,看起来不错。是否有另一种方法可以在 web.xml / faces-config 中进行配置?
  • 嗯,不是很好。您可以指定受限页面以及如何记录用户,但它通常仅适用于领域(有时很难将其全部设置并连接在一起)。顺便说一句,你为什么要只使用这些 xml 文件?在我看来,坚持经典的编程风格而不是用 XML 来打扰自己,更简洁、更易读
【解决方案2】:

我对 Websphere 不熟悉,但由于它是一个兼容 Java EE 6 的应用服务器,因此您可以为此创建一个 JDBCRealm。参见Java EE 6 tutorial的这一章。

【讨论】:

  • 谢谢,但对我来说这不是我认为的最佳方式,因为也许我想用 ldap 更改数据库。
  • @veote 我使用 weblogic,但在领域中更改身份验证提供程序并不难,您可以轻松切换技术。
  • 如果您查看教程中的示例(根据我的经验),我同意 gbagga 的观点,即切换不应该那么复杂。
【解决方案3】:

你也可以看看选项(Framewroks)

  1. Spring Security
  2. Apache Shiro
  3. Java EE Security Tutorial
  4. 如前所述,Application Server 提供了身份验证/授权。
  5. 实施过滤器(用于身份验证/授权的自定义本地逻辑)

涵盖 JSF 中 AnA 的博客

  1. User session filter
  2. Access Control in JSF using a PhaseListener

希望对你有帮助

【讨论】:

  • 我不知道 Apache Shiro,值得一试吗?尤其是与 Spring Security 相比(如果你有这两个方面的经验)
  • @PetrMensik 我没有尝试过,但正如在博客中看到的那样,有时在 SO 它绝对值得一试人们确实使用它。
  • 非常感谢,我想shiro就是我想要的。我会试试这个
  • @veote 欢迎您,您可以将我的回复标记为您的问题的答案,我会获得一些积分;)
猜你喜欢
  • 2014-12-27
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-24
  • 1970-01-01
相关资源
最近更新 更多