0

我的蛋糕 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)))
  );

我的用户模型是用户

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

我究竟做错了什么?

谢谢

4

2 回答 2

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'

);

于 2013-04-22T12:39:53.580 回答
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)))
);

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

于 2013-04-22T12:19:07.560 回答