阻止用户直接访问CakePHP中的重定向URL


Prevent user from directly accessing a redirection URL in CakePHP

有些URL我只用于在成功操作后重定向用户。(例如,提交反馈后的"谢谢"页面)。

问题是这些页面可以直接访问。

有办法防止这种情况发生吗?

function thank_you() {
    if($this->referer() != 'some_url') {
        $this->redirect('/');
    }
}

在你不想直接访问的方法中,只需检查推荐人是否有效(即"谢谢"页面的"联系表格"。

如果推荐人不是"联系人表单",你可以重定向到任何地方。如果匹配,则输出感谢页面。

您可以在操作完成后创建并存储一个随机密钥,然后在重定向之前简单地验证该密钥(使用会话、url或db的组合)是否有效。

看起来Controller::flash可以帮助您。

我会在重定向之前在页面上设置一个会话变量。然后在"谢谢"页面上,对变量进行测试并取消设置。如果测试时它不在那里,那么重定向到一个错误页面,上面写着"无法直接访问此页面"

我从来没有使用过Cake,所以这是一个通用的PHP答案,而不是Cake特有的答案。