我正在为无状态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;
}
// ...
}
}
答案 0 :(得分:1)
您可以在身份验证配置中指定的Controller中,在登录动作本身内部设置视图变量,例如:
$this->loadComponent('Auth', [
'loginAction' => [
'controller' => 'Users',
'action' => 'login',
'plugin' => 'Users'
],
对于此配置,大概是在UsersController
的{{1}}操作中,您可以设置以下内容,并在其中设置视图变量并将其序列化:
login