我看到在CakePHP 3文档示例中,控制器的 initialize 函数中使用了Auth组件 allow 和 deny 函数。而我在网上和堆栈溢出中看到了一些示例,人们使用这些方法在 beforeFilter 中调用。
在CakePHP 3.6应用程序中解决此问题的最好,最有效的方法是什么?我应该使用以下方法调用:
$this->Auth->allow(/*...*/);
$this->Auth->deny(/*...*/);
在初始化或 beforeFilter 中?
感谢您的帮助。
答案 0 :(得分:1)
默认情况下,在Controller.startup
事件中进行实际检查是否允许操作。由于必须先定义允许/不允许的动作,并且Controller::initialize()
和Controller::beforeFilter()
都满足此要求,因此两者都应是定义允许的动作的良好候选者。
但是,在Auth
配置中,您可以在此检查完成的地方更改事件,因此,定义允许动作的更安全的地方是Controller::initialize()
,因为在任何{{1}事件之前都会调用它}可以挂钩。