gpt4 book ai didi

laravel - 自定义 header 在 Laravel $request 对象中不可用

转载 作者:行者123 更新时间:2023-12-04 02:06:39 25 4
gpt4 key购买 nike

我有一个 Web 应用程序,我根据在 header 中作为 API_TOKEN 发送的自定义 token 进行身份验证。 .在我在源代码(laravel)中进行了所有代码挖掘之后,我不确定发生了什么

这是我的中间件

protected $AUTH_HEADER = 'API_TOKEN';
protected $_RESPONSE = array('status' => false, 'message' => '', 'data' => array());

public function handle($request, Closure $next, $guard = null)
{
$response = $this->_RESPONSE;
if($request->hasHeader($this->AUTH_HEADER)){
$api_token = $request->header($this->AUTH_HEADER);
try{
$request->user = \App\User::where(['api_token' => $api_token])->firstOrFail();
Auth::login($request->user);
$response = $next($request);
}catch(\Exception $exception){
$response['status'] = false;
$response['message'] = 'Invalid Token.';
}
}else{
$response['status'] = false;
$response['message'] = 'Unauthorized Request.';
}

// Lines ONLY I used for cross verification of availability of my header
// $response['data'] = getallheaders();
// $response['data'] = $_SERVER;
return $response;
}

这是我的 POST 请求的屏幕截图, api.easyinventory.com是映射到我的应用程序的自定义虚拟主机

enter image description here

我的路线在 api.php 中的位置如下所示默认情况下,它将放置在 api 下的路由组下方字首
Route::group(['prefix' => 'product'], function(){
Route::get('read', 'API\ProductController@read');
}

遇到问题,如果我调用 getallheaders() ,我可以看到我的自定义标题,如下所示

enter image description here

但在 $request ,我无法得到它。我将不胜感激在这个问题上的任何领导。

我的努力包括追踪这些标题的实际位置 SET$request对象,我查了 ServerBag.php在 Symfony 源代码中

Symfony ServerBag Class Method - getHeaders .

如果你看看这个函数 getHeaders .它仅在 headers 中添加选择性标题数组,要么使用 Content作为起始字符串或以 HTTP_ 开头.我尝试传递我自己的标题,如 HTTP_API_TOKEN但成功:-(

最佳答案

您可以尝试使用全局助手request()

request()->header('API_TOKEN'); //<-- manually passing the string first, for test purposes

编辑------------
正如OP在下面的评论中提到的:

我们应该以 Camel 格式访问我们的 header 所以将它发送为 API-TOKEN并以 request()->header('Api-Token'); 访问它

关于laravel - 自定义 header 在 Laravel $request 对象中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42835691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com