Laravel API突然返回Passport 401未经身份验证的错误

时间:2018-03-04 03:52:11

标签: php laravel api laravel-5.3 laravel-passport

我有一个设置,其中2个Laravel 5.3设置充当API和客户端,用于解耦电子商务解决方案。

工作了大约一年后,突然它开始返回401 Unauthenticated错误。

我的实现完全按照Laravel 5.3文档完成。

错误 客户端错误:" GET" http://myapi.com/api/get/product/导致了#34; 401 Unauthorized"响应:{"错误":"未认证"}

1 个答案:

答案 0 :(得分:0)

观察

  • 我们发现网站前端无法连接到后端以获取数据。
  • API正在返回并且身份验证错误。
  • 进一步向下钻取显示,这是身份验证令牌的问题。
  • 然后我们检查了令牌并发现它们已过期。

根本原因

  • 根据Laravel文档(API Authentication (Passport)),Laravel Version 5.3令牌不需要刷新和续订。

  • 与文件相反,Laravel 5.3令牌在1年后到期,需要刷新/续订。

  • 具有讽刺意味的是,“Laravel Refresh Token”也会在同一天到期,无法在到期后自动续订令牌。

<强>解决方案

  • 在生成Laravel 5.3 Token之前,将Refresh Token生命周期延长到比Access Token更大的值。
  • 在AuthServiceProvider.php 启动方法中使用以下代码,并在$ this-&gt; registerPolicies()下方使用

    $这 - &GT; registerPolicies();

    护照::路线(); 护照:: refreshTokensExpireIn(碳::现在() - &GT; addDays(30));

  • 忽略Laravel 5.3文档,使用Refresh Token实现令牌更新方法。