CakePHP Auth组件在登录前检查用户

Atu*_*vid 6 authentication components cakephp login verify

我想阻止被禁止的用户登录该网站并向他们发送禁止他们的消息.我尝试使用isAuthorized(),但它允许用户登录,并且只有在拒绝他批准未授权的操作之后才允许用户登录.

所以,基本上我想知道在登录过程发生之前将检查用户表是否为banned = true的条件放在哪里.现在我的登录功能是空的,因为它由Auth组件自动控制.

Atu*_*vid 13

最后,我通过API找到了解决方案.我想知道是否有人曾经使用过这个,因为没有人指出我,或者我可能不够清楚.无论如何,要为登录过程添加一个条件,你只需将它放在变量$ this-> Auth-> userScope中

因此,要检查用户是否被禁止,我只是将此行添加到AppController中的beforeFilter()中,

$this->Auth->userScope = array('User.banned'=>0);
Run Code Online (Sandbox Code Playgroud)

希望这有助于某人.


Mat*_*hew 6

或者: $this->Auth->userScope = array('User.banned'=>0);

包含Auth组件时可以执行此操作.这可能会节省一些微小的开销,因为$this->Auth->userScope每次解析控制器时都不会调用.

public $components = array(
    'Auth' => array(
        'authenticate' => array(
            'Form' => array(
                'passwordHasher' => 'Blowfish',
                'scope' => array('User.banned' => 0)
            )
        ),
        'authorize' => array('Controller')
    )
);
Run Code Online (Sandbox Code Playgroud)