Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 保护JSF应用程序_Security_Jsf 2 - Fatal编程技术网

Security 保护JSF应用程序

Security 保护JSF应用程序,security,jsf-2,Security,Jsf 2,我的一个自由职业者朋友邀请我加入他的JSF2.0项目,我正在慢慢加快速度,并将这些部分整合起来。我来自一个Windows窗体.NET世界,至少我有很多东西要学 我主要关心的是在如何保护JSF应用程序方面缺乏明显的共识 这里提出了一些方法,包括使用Spring安全性、Seam安全性、自定义阶段侦听器,或者简单地使用rendered=“#{…}”属性根据用户身份验证显示/隐藏组件 我曾尝试实现其中一些方法,例如SpringSecurity,但发现它很容易被JSF导航机制打败,JSF导航机制转发到视图

我的一个自由职业者朋友邀请我加入他的JSF2.0项目,我正在慢慢加快速度,并将这些部分整合起来。我来自一个Windows窗体.NET世界,至少我有很多东西要学

我主要关心的是在如何保护JSF应用程序方面缺乏明显的共识

这里提出了一些方法,包括使用Spring安全性、Seam安全性、自定义阶段侦听器,或者简单地使用
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方法,所以要小心)。

这几乎就是我所做的,可能是简单和安全的。