【问题标题】:Laravel middleware api always return null even with the correct token即使使用正确的令牌,Laravel 中间件 api 也总是返回 null
【发布时间】:2020-01-13 20:29:43
【问题描述】:

我只是使用 laravel 提供的默认 api,在制作项目时稍作改动

    Route::middleware('auth:api')->get('/user', function (Request $request) {
    return User::all();
});

我已经在用户表中创建了 api_token 并用一些令牌填充它 当我使用邮递员时,api有效 Postman

但是当我在控制器中编写请求代码时,它总是返回 null

$token = 'abcde';
$request = Request::create('/api/user', 'GET', [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.$token,
]);
$response = json_decode(Route::dispatch($request)->getContent());
dd($response);

如果我不使用中间件('auth:api'),API 就可以工作 有什么建议吗?

编辑 我尝试使用 Guzzle 并收到此错误 Guzzle Error

【问题讨论】:

  • 您使用的是什么身份验证护照 jwt
  • 这是默认的 laravel auth:api。但是我使用 jwt 只是在用户注册帐户时生成随机令牌。
  • 然后使用 jwt 默认的将不会像这样你可以阅读这个medium.com/@danielalvidrez/…
  • 但是,即使我使用像上面邮递员图片中那样的硬编码令牌,它仍然返回 null。
  • 你不能这样设置令牌

标签: php laravel rest laravel-5 postman


【解决方案1】:

试试Guzzle

$client = new \GuzzleHttp\Client();
$token = 'abcde';
$request = $client->request('api/user', 'GET', [
        'Accept' => 'application/json',
        'Authorization' => 'Bearer '.$token,
        ]);
$response = $request->getBody()->getContents();
$response = json_decode($request,true);
dd($response);

【讨论】:

  • 感谢您的回答,但现在我收到 cURL 错误 6:无法解析主机:GET(请参阅 curl.haxx.se/libcurl/c/libcurl-errors.html)。有什么需要我做的设置吗?
  • 仍然弹出相同的cURL错误6。为了您的信息,我使用 php artisan serve 制作本地开发服务器。
  • 不使用 php artisan serve 仅使用 localhost 再次检查更新代码
  • 但是如何在没有 php artisan serve 的情况下运行 laravel?
  • 我尝试使用 xampp localhost 运行它,但仍然弹出错误 6
猜你喜欢
  • 2017-05-08
  • 1970-01-01
  • 1970-01-01
  • 2014-01-15
  • 1970-01-01
  • 2020-05-19
  • 1970-01-01
  • 2017-12-13
  • 2018-11-21
相关资源
最近更新 更多