CakePHP中带条件的身份验证和ACL

CakePHP中带条件的身份验证和ACL,php,cakephp,acl,before-filter,Php,Cakephp,Acl,Before Filter,我找不到解决我问题的办法。 我有一个使用Auth组件和ACL组件的CakePHP网站。 我不希望非活动用户能够登录 我发现Auth组件中的userScope可以做到这一点。 因此,在我的AppController中,在beforeFilter中,我添加了以下内容: $this->Auth->userScope = array('User.active' => 1); 当然,在我的UserController beforeFilter中,会调用父方法 但是,这不起作用,

我找不到解决我问题的办法。 我有一个使用Auth组件和ACL组件的CakePHP网站。 我不希望非活动用户能够登录

我发现Auth组件中的userScope可以做到这一点。 因此,在我的AppController中,在beforeFilter中,我添加了以下内容:

    $this->Auth->userScope = array('User.active' => 1);
当然,在我的UserController beforeFilter中,会调用父方法

但是,这不起作用,我仍然可以使用活动设置为0的用户登录。 我想这可能是因为ACL组件

这是我在AppController中的beforFilter

    public function beforeFilter()
    {
    if (!$this->Session->check('Auth.User'))
        $this->layout = 'identification';
    $this->Auth->allow('display');

    //Configure AuthComponent
    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
    $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login');
    $this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'welcome');
    $this->Auth->userScope = array('User.active' => 1);
    }

我错过了什么?

如果你没有成功,你可以选择:

$user = $this->Auth->user();
if($user['User']['active'] == 0){
   $this->redirect($this->Auth->logout());
   $this->Session->setFlash('You are not active.');
}

如果您没有成功,您可以随时使用替代方案:

$user = $this->Auth->user();
if($user['User']['active'] == 0){
   $this->redirect($this->Auth->logout());
   $this->Session->setFlash('You are not active.');
}

您使用的代码对Cake 2无效。看

下面是一些应该可以工作的代码:

$this->Auth->authenticate = array('Form' => array('scope' => array('User.active' => 1)));

您使用的代码对Cake 2无效。看

下面是一些应该可以工作的代码:

$this->Auth->authenticate = array('Form' => array('scope' => array('User.active' => 1)));

您使用的是cakePHP 2.0还是1.3?您使用的是cakePHP 2.0还是1.3?好的,我在$this->Auth->login()方法之后进行了检查,如果用户未处于活动状态,则会调用$this->Auth->logout(),并重定向到良好的布局。但这并不好,因为我需要让用户登录才能注销。对安全性来说不是很好……我知道这是目前最好的拍摄方式,除非你找到更好的解决方案,如果你找到了,请随意在这里发布DOk,我在$this->Auth->login()方法之后进行了检查,如果用户未处于活动状态,则会调用$this->Auth->logout(),并重定向到良好的布局。但这并不好,因为我需要让用户登录才能注销。对安全性来说不是很好……我知道这是目前最好的拍摄方式,除非你找到更好的解决方案,如果你找到了,请随意在这里发布D