【问题标题】:JSF Security LibrariesJSF 安全库
【发布时间】:2013-01-27 09:41:02
【问题描述】:

有哪些技术和库可用于 JSF 安全性?我想保护我的 JSF 应用程序的管理页面不被公众访问。

【问题讨论】:

标签: security jsf


【解决方案1】:

这是一个相当困难的问题,但这些天我会选择Spring SecurityApache Shiro。如果您不使用 Spring,我会看看 Shiro。设置和使用都非常容易。还有一些教程,比如 BalusC 的this one

另一个选项是Realms,它可以具有容器特定的(Tomcat、Glassfish 等)设置,这会使它们无法移植。您还可以使用Phase Listener,这是保护小型项目的一种非常简洁的方法(如果您的应用程序很小,我会选择此选项)。还有其他框架和解决方法,尝试在 Google 上搜索更多有关 Java EE 安全性的信息,您就会看到。

【讨论】:

  • 领域不可移植?我不敢苟同。您可能会说,领域可能存在特定于容器的配置。是否存在不提供领域 (JAAS) 的 JEE 应用服务器或 servlet 容器?
  • 我的意思是这些容器特定的设置,我会更新我的答案。感谢通知
  • 感谢@Petr Mensik。我没有使用过这些,但我会尝试给它一些研究时间,并可能会尝试 Shiro。
  • 还有Seam3安全模块。
  • @Petr 感谢您向我介绍 apache shiro。我对此进行了深入研究,似乎适合我的项目。我只是面临实施该错误。错误是:“部署期间发生错误:加载应用程序时出现异常:java.lang.IllegalStateException:ContainerBase.addChild:开始:org.apache.catalina.LifecycleException:java.lang.IllegalArgumentException:javax.servlet.ServletException:com。 sun.enterprise.container.common.spi.util.InjectionException:为类创建托管对象时出错:类 org.apache.shiro.web.env.EnvironmentLoaderListener。”感谢您的帮助。
【解决方案2】:

你可以简单地使用spring:

在你的pom.xml中添加spring安全依赖,然后修改springSecurity-taglibs.xml(添加类似areAnyGranted的函数名)

然后,在您的 web.xml 中,添加上下文参数:

<context-param>
    <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
    <param-value>/WEB-INF/springSecurity-taglibs.xml</param-value>
  </context-param>

然后在你的 applicationContext-security.xml 中添加角色

<security:intercept-url pattern="/pages/admin.xhtml" access="ROLE_ADMIN" />

【讨论】:

  • 请更正答案。这是对其中一种可能的解决方案的非常详细的答案......人们不能接受这个答案,因为它不是明确的唯一答案
猜你喜欢
  • 2021-12-26
  • 2023-03-15
  • 2011-02-17
  • 2011-09-19
  • 2011-09-14
  • 2012-07-04
  • 2011-07-03
  • 2014-01-20
  • 1970-01-01
相关资源
最近更新 更多