【问题标题】:JSF security : page redirect vs. page forwardJSF 安全性:页面重定向与页面转发
【发布时间】:2013-01-25 14:50:22
【问题描述】:

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

【问题讨论】:

    标签: security jsf


    【解决方案1】:

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

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

    【讨论】:

    • 请问为什么通过 POST 导航是不好的做法?仅仅是因为书签的原因吗?如果我理解得很好,你建议我使用play?faces-redirect=true 吗?如果没有,如何管理我的 xhtml 页面之间的安全性?谢谢
    • 它会影响书签、搜索引擎优化、用户体验、浏览器后退/前进按钮等,是的。很难理解具体的功能要求,因为代码不是完全自记录的(玩?这是什么意思?),但如果我猜对了,它代表一个登录表单,你想向用户显示主页登录成功后的页面。在这种情况下,重定向绝对是要走的路。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 2015-10-23
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 2012-03-16
    相关资源
    最近更新 更多