【发布时间】:2017-02-24 16:33:25
【问题描述】:
我正在为我正在创建的应用程序开发 API。此应用程序将从该 API 获取所有信息(首先对用户进行身份验证,然后获取信息)
现在,我正在尝试让用户向 API 发送用户名和密码,它会验证信息并返回“ok”或“not”,非常简单,仅启动。我知道其中涉及的所有安全性,只需要让它工作。
已经设法在 API 端发送用户名和密码(我 100% 确定数据已正确保存)。不过,当我打电话时
$this->Auth->identify($this->request->data);
它总是返回 false 给我(已经尝试过带参数和不带,结果是一样的)。
我正在使用 HttpRequester、firefox 插件来发送信息。
我已经对 $this->request->data 进行了调试,以查看信息是否正确,并且正确。由于密码正在被散列,因此无法在数据库上进行查找。
数据库密码字段是一个长度为300的varchar(已经用255试过了,也没用)
感谢您的帮助
编辑:
$this->loadComponent('Auth', [
'authenticate' => [
'Form' => [
'fields' => [
'username' => 'email',
'password' => 'password'
]
],
]
]);
if($this->request->is('POST')){
//debug($this->request->data);
$user = $this->Auth->identify($this->request->data);
}
用户表:
protected $_accessible = [
'*' => true,
];
/**
* Hash password
*
*/
protected function _setPassword($password)
{
return (new DefaultPasswordHasher)->hash($password);
}
protected function _getFullName()
{
if(isset($this->_properties['full_name'])){
return ucwords(mb_strtolower($this->_properties['full_name']));
}
}
ps:也尝试了以下操作(替换帖子中的变量,但也没有运气)
$this->request->data['username'] = "xxxx";
$this->request->data['password'] = "zzzz";
【问题讨论】:
-
在请求数据中,您也必须使用自定义字段名称,即
email而不是username。username键只是身份验证器可以访问您配置的字段/列名称的选项名称。 -
是的,这就是问题所在 :) 谢谢老兄!
标签: php api authentication cakephp cakephp-3.x