CakePHP:使用Security :: allowedControllers和Security :: allowedActions

时间:2010-01-31 17:53:19

标签: php security cakephp

我正在尝试使用Security :: allowedControllers和Security :: allowedActions。所以我有一个看起来或多或少像这样的控制器

class AppController extends Controller {
    var $components = array('Security'); //other components
    //other stuff
}

class BookController extends AppController {
    function beforeFilter() {
        parent::beforeFilter();
        $this->Security->allowedControllers = array('Users');
        $this->Security->allowedActions = array('view');
        $this->Security->RequireAuth = array('search', 'results');
    }
    //other stuff
}

“搜索”操作会显示一个表单,然后调用“结果”来显示搜索结果。我故意试图被黑洞包围。

根据我对$ this-> Security-> allowedControllers和$ this-> Security-> allowedActions的理解,我应该只能从控制器'用户'的操作'视图'获取POST数据”。特别是动作“结果”应该将我重定向到黑洞,因为它从控制器“书籍”的动作“搜索”中获取POST数据。

但事实并非如此。我甚至可以制作交叉控制器请求,并且永远不会被黑洞,所以我想我没有正确使用这些变量。触发跨控制器请求控制的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

试试这个:

$this->Security->allowedFields = array('Model.fieldname', ...);

您需要将不在模型中的字段添加到allowedFields中,就像我猜测表单中的Model.search字段一样。

答案 1 :(得分:0)