激活/非激活检查不工作,而登录cakephp


active/inactive check not working while login cakephp

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

我想禁止非活动用户登录到我的应用程序。为此,我在我的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)))
  );

My user model is user

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

我做错了什么?

谢谢

请检查您的数组是否错误传递

检查下面的数组,它将为您工作

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'

);

每当我在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)))
);

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