私の管理ハブページは現在、PagesController(admin)にあります。ただし、ログインしていないユーザーと非管理ユーザーの両方が、そのハブからのすべてのリンクにアクセスできない場合でも、このハブページにアクセスできます。CakePHP 3 - PagesControllerのページに対する承認
編集:「管理者」はPagesControllerの機能ではなく「表示」に該当するため、おそらく機能していないことに気付きました。
次のように私の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);
}
注意をテストされていないことに注意してください/3.0/en/controllers/components/security.html#usage)は 'if($ this-> request-> getParam( 'admin'))'が行く方法であることを示します。私は管理用ルーティングを使用していないので、どちらが正しいか、どちらが受け入れられるのかを簡単に確認することはできません。 –