Security 保护JSF应用程序
我的一个自由职业者朋友邀请我加入他的JSF2.0项目,我正在慢慢加快速度,并将这些部分整合起来。我来自一个Windows窗体.NET世界,至少我有很多东西要学 我主要关心的是在如何保护JSF应用程序方面缺乏明显的共识 这里提出了一些方法,包括使用Spring安全性、Seam安全性、自定义阶段侦听器,或者简单地使用Security 保护JSF应用程序,security,jsf-2,Security,Jsf 2,我的一个自由职业者朋友邀请我加入他的JSF2.0项目,我正在慢慢加快速度,并将这些部分整合起来。我来自一个Windows窗体.NET世界,至少我有很多东西要学 我主要关心的是在如何保护JSF应用程序方面缺乏明显的共识 这里提出了一些方法,包括使用Spring安全性、Seam安全性、自定义阶段侦听器,或者简单地使用rendered=“#{…}”属性根据用户身份验证显示/隐藏组件 我曾尝试实现其中一些方法,例如SpringSecurity,但发现它很容易被JSF导航机制打败,JSF导航机制转发到视图
rendered=“#{…}”
属性根据用户身份验证显示/隐藏组件
我曾尝试实现其中一些方法,例如SpringSecurity,但发现它很容易被JSF导航机制打败,JSF导航机制转发到视图而不是重定向。换句话说,如果用户直接键入安全页面的url,Spring安全性将正常工作,但如果h:commandButton
的操作将他带到那里,则不会正常工作
有鉴于此,一些人建议通过使用“faces redirect=true”
强制重定向,但我们认为这可能会成为一个性能问题,因为这会导致每次从浏览器发出2个请求
另一方面,在出现了这么多缺少依赖项的错误之后,我放弃了尝试实现Seam安全性
到目前为止,我找到的最好的解决方案是一个来自的定制阶段侦听器,但我并不100%相信这应该用于面向公众的JSF应用程序
最后,这给我们留下了什么?我知道这是一个非常开放的问题,但我真的不知道下一步该怎么办。我很确定我已经完全遵循了不同的教程,例如Spring教程,但我仍然对它的工作方式不满意
至少有人能证实/证实Spring安全性应该跨JSF转发工作这一事实吗?我已经看到许多其他人的帖子都有同样的问题?这至少会给我一个继续前进的方向
谢谢。当我使用JSF时,我使用spring安全性 关于您评论SpringSecurity允许使用命令按钮执行重定向的行为,很奇怪,您一定有错误的配置,因为它在我的项目中运行良好(我刚刚测试过) 在任何情况下,您也可以根据用户的角色使用spring安全标记来呈现或不呈现组件 这是一个可以帮助您实现标记的项目。
希望这有助于..将用于页面验证的servlet过滤器(应用于faces servlet)、身份会话bean(存储用户属性,例如角色、登录id)和一些用于权限检查的方法(例如isAdmin()、canViewRecord(recordID))组合在整个页面上
你看,说到安全,我选择不把它交给别人。此外,我在几个地方进行了验证(隐藏组件不会阻止人们伪造正确的POST请求来触发特定的bean方法,所以要小心)。这几乎就是我所做的,可能是简单和安全的。