CakePHP 3.2:防止在用户未登录时显示authError

Mul*_*oad 1 authentication authorization cakephp cakephp-3.0

即使用户未登录并尝试打开主页,在重定向到登录页面后,也会显示authError.是否有一种优雅的方法可以防止这种情况,而无需修改Auth组件?这是我加载Auth组件的方式(我使用TinyAuth作为授权适配器):

$this->loadComponent('Auth', [
                'loginAction' => [
                    'controller' => 'Users',
                    'action' => 'login'
                ],
                'loginRedirect' => [
                   'controller' => 'Home',
                   'action' => 'index'
                ],
                'authError' => 'You dont have permissions for that action',
                'authenticate' => [
                    'Form' => [
                        'fields' => [
                            'username' => 'email',
                            'password' => 'password'
                        ],
                        'scope' => ['Users.active' => true],
                        'contain' => ['Roles']
                    ]
                ],
                'authorize' => [
                    'TinyAuth.Tiny' => [
                        'roleColumn' => 'role_id',
                        'rolesTable' => 'Roles',
                        'multiRole' => true,
                        'pivotTable' => 'roles_users',
                        'superAdminRole' => null,
                        'authorizeByPrefix' => false,
                        'prefixes' => [],
                        'allowUser' => false,
                        'adminPrefix' => null,
                        'autoClearCache' => true
                    ] 
                ]
            ]
        );
Run Code Online (Sandbox Code Playgroud)

Sev*_*lor 6

根据CakePHP的文档,您可以通过设置authError来防止显示错误消息false.

有时,您只想在用户登录后才显示授权错误.您可以通过将其值设置为布尔值false来禁止显示此消息.

这应该禁用错误消息:

if (!$this->Auth->user()) {
    $this->Auth->config('authError', false);
}
Run Code Online (Sandbox Code Playgroud)

  • 文档提到你应该在 `beforeFilter()` 中使用它。:)。 (2认同)
  • 从 cakePHP 4 开始使用 setConfig (2认同)