JSF安全性:页面重定向与页面转发

时间:2013-01-25 14:50:22

标签: security jsf

我是JSF的新手,我想了解为什么页面重定向和页面转发不会产生相同的安全渲染。

我有一个调用支持方法的JSF按钮:

<h:form>
    <!-- content... -->
    <p:commandButton action="#{login.play}" ... />
</h:form>

登录托管bean

public String play() {
   ...
   //forward implementation
   return "play";
}

public String play() {
   ...
   //redirect implementation
   return "play?faces-redirect=true";
}

我的页面play.xhtml已受到保护。只有角色adminuser可以访问它,但使用我的第一个play方法,安全约束未启用,我可以访问。为什么会有所不同?

1 个答案:

答案 0 :(得分:5)

安全性基于每个请求执行。前向重用当前请求对不同视图的响应。重定向会创建一个全新的请求,其响应将用于不同的视图。您可以通过查看浏览器地址栏中的请求URL轻松查看。如果是前锋则保持不变。

在一个不相关的说明中,通过POST导航是不好的做法。您应该有条件地在同一页面中显示结果,或者使用普通链接或在POST后通过重定向进行GET导航。