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

Oli*_* J. 4 security jsf

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

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

<h:form>
    <!-- content... -->
    <p:commandButton action="#{login.play}" ... />
</h:form>
Run Code Online (Sandbox Code Playgroud)

登录托管bean

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

public String play() {
   ...
   //redirect implementation
   return "play?faces-redirect=true";
}
Run Code Online (Sandbox Code Playgroud)

我的页面play.xhtml很安全.只有角色admin或者user可以访问它但是使用我的第play一种方法,安全约束没有启用,我可以访问.它为什么不同?

Bal*_*usC 5

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

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