如何在CakePHP3.x中使用摘要式身份验证

时间:2018-09-16 09:54:12

标签: authentication cakephp authorization cakephp-3.0

我为我的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作为标头发送?

0 个答案:

没有答案