是否可以将数据从中间件传递到Laravel 5.5中的请求?

时间:2018-02-12 00:24:06

标签: php laravel laravel-5 request

我有一个基于api_key的自定义api身份验证通过请求标头。它是使用中间件实现的。我想在用户中附加经过身份验证的请求,因此它将在api控制器中提供。

这是我在中间件中尝试的内容:

public function handle($request, Closure $next)
{
    // Load api key
    $api_key = ApiKey::where('api_key', $request->header('X-API-KEY'))
        ->with('user')
        ->first();

    // Check if api key is valid
    if (!$api_key) {
        throw new HttpException(401, 'Invalid api key.');
    }


    // Append api key user to the request
    $request->attributes->add(['api_user' => $api_key->user]);

    // Proceed with the request
    return $next($request);
}

然后在我的控制器中,我试图检索这样的自定义请求属性:

var_dump($request->get('api_user')); // returns 'null'
var_dump($request->attributes->get('api_user')); // returns 'null'
var_dump($request->api_user); // returns 'null'

我也尝试过设置api用户这样请求:

$request->attributes->set('api_user', $api_key->user);
$request->merge(['api_user' => $api_key->user]);

仍然没有运气。

有什么想法吗?或者这不可能吗?

0 个答案:

没有答案