我的管理中心頁面當前位於PagesController(稱爲admin)中。但是,即使無法訪問該中心的所有鏈接,未登錄的用戶以及非管理員用戶都能夠訪問此中心頁面。CakePHP 3 - PagesController上的頁面授權
編輯:我剛剛意識到它可能不工作,因爲「admin」不是PagesController中的函數,而是屬於「display」。
我的AppController如下:
public function initialize()
{
parent::initialize();
$this->loadComponent('RequestHandler');
$this->loadComponent('Flash');
$this->loadComponent('Auth',[
'authorize' => 'Controller',
]);
$this->Auth->allow(['display']);
}
public function beforeFilter(Event $event)
{
$this->Auth->deny(['admin']);
}
我PagesController如下:
public function initialize()
{
parent::initialize();
$this->Auth->deny(['admin']);
}
public function isAuthorized($user)
{
if (in_array($this->request->action,['admin'])) {
return (bool)($user['role_id'] === 1); //where role_id = 1 refers to an admin
}
return parent::isAuthorized($user);
}
注意[文檔的另一位(https://book.cakephp.org /3.0/en/controllers/components/security.html#usage)將表明'if($ this-> request-> getParam('admin'))'是要走的路。我不使用管理員路由,所以我不能輕易確認哪個是正確的,或者他們都可以接受。 –