我为我的cakePHP应用程序创建API。 我遵循了文档,将以下代码添加到AppController:
$this->loadComponent('Auth', [
'authenticate' => [
'Digest' => [
'fields' => ['username' => 'username', 'password' => 'digest_hash'],
'userModel' => 'Users'
],
],
'storage' => 'Memory',
'unauthorizedRedirect' => false
]);
我还通过将以下代码添加到UsersTable.php
中来散列密码:
public function beforeSave(Event $event)
{
$entity = $event->getData('entity');
// Make a password for digest auth.
$entity->digest_hash = DigestAuthenticate::password(
$entity->username,
$entity->plain_password,
env('SERVER_NAME')
);
return true;
}
我在UsersController.php
内使用此代码从授权中排除了注册方法
public function beforeFilter(Event $event) {
parent::beforeFilter($event);
$this->Auth->allow(['add']);
}
我正在使用邮递员测试API,我成功添加了一个用户,输出是:
"username": "Lio",
"digest_hash": "0cbcff228b5d0e085bc99721cbc1bea7",
"id": 8
现在如何使用digest_hash登录到系统,以及如何使用digest_hash授权其余方法? 我需要写一个登录方法吗? 还是我需要在每个请求中都将用户名和digest_hash作为标头发送?