CakePHP 3.7-从自定义身份验证类内部设置视图变量

时间:2019-01-14 14:59:59

标签: authentication cakephp cakephp-3.0 custom-authentication

我正在为无状态REST API编写自己的身份验证类。为了使开发人员更容易使用,我想在身份验证失败时返回特定的错误消息,理想情况下,只返回一个view变量即可。但是,我还没有弄清楚authenticate类如何访问视图变量。

如何通过身份验证设置视图变量?或者我该如何解决?

给出一些想法:

<?php

namespace App\Auth;

class HmacAuthenticate extends BasicAuthenticate
{

    // ...

    public function getUser(ServerRequest $request)
    {
        $user_id = $request->getEnv('PHP_AUTH_USER');
        $hash = $request->getEnv('PHP_AUTH_PW');
        $timestamp = $request->getEnv('HTTP_X_AUTHORIZATION_TIMESTAMP');

        if (!is_string($user_id) || $user_id === '' || !is_string($hash) || $hash === '' || !is_string($timestamp) || $timestamp === '')
        {
            $this->set('authError', 'Missing essential fields');

            return false;
        }

        // ...
    }
}

1 个答案:

答案 0 :(得分:1)

您可以在身份验证配置中指定的Controller中,在登录动作本身内部设置视图变量,例如:

 $this->loadComponent('Auth', [
    'loginAction' => [
        'controller' => 'Users',
        'action' => 'login',
        'plugin' => 'Users'
    ],

对于此配置,大概是在UsersController的{​​{1}}操作中,您可以设置以下内容,并在其中设置视图变量并将其序列化:

login