4

我是 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一种方法,未​​启用安全约束,我可以访问。为什么不一样?

4

1 回答 1

5

安全性是根据每个请求执行的。转发重用当前请求的响应以获取不同的视图。重定向创建一个全新的请求,其响应用于不同的视图。您可以通过查看浏览器地址栏中的请求 URL 轻松看到这一点。在前锋的情况下,它保持不变。

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

于 2013-01-25T15:36:40.140 回答