我的蛋糕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)))
);
我的用户模型是用户
但是这允许活跃用户也登录到应用程序。
我做错了什么?
由于
答案 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)))
);
从语义上讲,我觉得这更有意义。