登录cakephp时,活动/非活动检查不起作用

时间:2013-04-22 12:05:50

标签: php cakephp authentication

我的蛋糕php应用程序的用户表有一个活动字段数据类型enum(1,0)

我想禁止非活动用户登录我的应用程序。为此我在Appcontroller.php中添加了这段代码

  public $components = array('Acl', 'Session',
      'Auth' => array('authorize' => array('Controller'),
          'loginRedirect' => array('controller' => 'users', 'action' => 'index'),
          'logoutRedirect' => array('controller' => 'users', 'action' => 'login'),
          'Form' => array('userModel' => 'User'),
          'all' => array('scope' => array('User.active' => 1)))
  );

我的用户模型是用户

但是这允许活跃用户也登录到应用程序。

我做错了什么?

由于

2 个答案:

答案 0 :(得分:2)

请检查你的阵列,这是错误的答案

检查下面的数组,它将适合你

public $components = array(
'Auth' => array(
    'loginAction' => array(
        'controller'    => 'users',
        'action'        => 'login'
    ),
    'authError' => 'Je hebt geen toegang tot dit gedeelte',
    'authenticate' => array(
        'Form' => array(
            'fields' => array('username' => 'email'),
            'scope' => array('is_admin' => '1')
        ),

    )
),
'Session'

);

答案 1 :(得分:0)

每当我在CakePHP中处理枚举时,它们的值总是一个字符串。因此,我认为您遇到的问题是1不等于'1'

对于您的活动字段,请尝试使用BOOLEAN数据类型,该数据类型是TINYINT(1)的同义词。然后,您应该在Auth组件配置中写入:

public $components = array('Acl', 'Session',
    'Auth' => array('authorize' => array('Controller'),
    'loginRedirect' => array('controller' => 'users', 'action' => 'index'),
    'logoutRedirect' => array('controller' => 'users', 'action' => 'login'),
    'Form' => array('userModel' => 'User'),
    'all' => array('scope' => array('User.active' => true)))
);

从语义上讲,我觉得这更有意义。