【发布时间】:2013-03-26 12:14:57
【问题描述】:
在我的 AppController 我有这个设置
public $components = array(
'Acl',
'Auth' => array(
'authorize' => array(
'Actions' => array('actionPath' => 'controllers')
)
),
'Session',
'DebugKit.Toolbar'
);
在我的用户模型中,我没有“用户名”字段,我有“电子邮件”,所以我将 $components 配置更改为:
public $components = array(
'Acl',
'Auth' => array(
'authorize' => array(
'Actions' => array('actionPath' => 'controllers')
),
'authenticate' => array(
'Form' => array(
'fields' => array(
'username' => 'email', 'password' => 'password'
)
)
)
),
'Session',
'DebugKit.Toolbar'
);
通过这种方式,我不会收到错误“模型没有字段'用户名'”,但我的登录被拒绝。 所以我切换回之前的配置,修改了表格
ALTER TABLE users CHANGE COLUMN username email VARCHAR(45) NOT NULL UNIQUE;
它成功了..那么我之前的配置有什么问题?
【问题讨论】:
-
您显示的查询是必要的,因为您将
username列更改为email,这正是您所描述的您想要的吗?如果这是一个粘贴错误并且实际上是相反的,请确保您的视图也有User.email输入字段,而不是复制/粘贴教程中的User.username示例。 -
我不明白为什么使用“身份验证”配置没有对用户运行任何查询以检查凭据并立即拒绝身份验证
标签: cakephp authentication acl