我有一个基于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]);
仍然没有运气。
有什么想法吗?或者这不可能吗?