我有一个用户表与一个活动字段数据类型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)))
);
从语义上讲,我觉得这样更有意义。