默认拒绝所有操作

Deny all actions by default

我正在尝试拒绝未经身份验证的用户访问所有页面,如文档中所述 (http://book.cakephp.org/3.0/en/controllers/components/authentication.html#making-actions-require-authorization),所以我将其放入我的 AppController.php:

public function initialize()
{
    parent::initialize();
    $this->loadComponent('Auth', [
        'loginAction' => [
            'controller' => 'AuthController',
            'action' => 'login'
        ],
        'authenticate' => [
            'OAuth2Client.OAuth2'
        ]
    ]);
}

public function beforeFilter(Event $event)
{
    parent::beforeFilter($event);
    $this->Auth->deny();
}

然后什么也没发生。未经授权的用户仍然可以在不被重定向的情况下看到所有页面。 我还尝试使用 'authorized' => 'controller' 作为 Auth 组件,但没有任何变化。 Authenticate class 登录正常,但我无法实现拒绝所有页面。

我解决了在我的自定义身份验证提供程序上添加正确方法的问题。 缺少的方法是 getUser。它没有在文档中提及,要么是由接口强制执行的,因此您应该定义此方法以使授权有效。 您还应该按如下方式设置授权控制器:

$this->loadComponent('Auth', [
    'authorize' => ['Controller']
]);