我正在尝试使用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数据。
但事实并非如此。我甚至可以制作交叉控制器请求,并且永远不会被黑洞,所以我想我没有正确使用这些变量。触发跨控制器请求控制的正确方法是什么?
答案 0 :(得分:0)
试试这个:
$this->Security->allowedFields = array('Model.fieldname', ...);
您需要将不在模型中的字段添加到allowedFields中,就像我猜测表单中的Model.search字段一样。
答案 1 :(得分:0)