私が作成しているアプリケーションのAPIを開発しています。このアプリケーションはこのAPIからすべての情報を取得します(最初にユーザーを認証してから情報を取得します)Cakephp REST APIを使ってユーザーを特定します
今、ユーザーにユーザー名とパスワードを送信させようとしています。それが "ok"か "not"かどうかを返します。非常に簡単に始めるだけです。私はこれに関係するすべてのセキュリティを知っている、ただこれを得る必要がある。
既にAPIサイドでユーザー名とパスワードを送信できました(データが正しく保存されていることを100%確信しています)。私は
$this->Auth->identify($this->request->data);
呼び出すときしかし、それは常に(すでにパラメータとし、結果は同じである、なしにしようとした)私にはfalseを返します。
私はHttpRequester、firefoxのプラグインを使用して情報を送信しています。
$ this-> request-> dataのデバッグを行って、情報が正しいかどうかを確認しました。パスワードがハッシュされているため、データベースで検索できません。
$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);
}
ユーザー表:
データベースのパスワードフィールドは、(すでに255で試してみました、また無作業)300の長さの助け
EDITため
おかげでvarchar型であります
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:次のようにしてみてください。 m個のポストでなく、運)
$this->request->data['username'] = "xxxx";
$this->request->data['password'] = "zzzz";
をチェックする必要があり、ここで
ですカスタムフィールド名も 'username'ではなく' email'です。 'username'キーはオーセンティケータが設定されたフィールド/カラム名にアクセスするためのオプション名です。 – ndm
うん、それは問題だった:)ありがとう! – Cafn