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



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

工作了大约一年后,突然它开始返回401未经身份验证的错误。

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

错误客户端错误:"GET"http://myapi.com/api/get/product/导致"401 未经授权"响应:{"错误":"未经身份验证。

观察

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

根源

根据Laravel
  • 文档(API身份验证(护照)),Laravel版本5.3令牌不需要刷新和更新。

  • 与文档相矛盾 Laravel 5.3 代币在 1 年后过期,需要刷新/续订。

  • 具有讽刺意味的是,"Laravel刷新令牌"也在同一天到期,因此在到期后无法自动续订令牌。

溶液

  • 在生成 Laravel 5.3 令牌之前,请将刷新令牌生存期延长到比访问令牌更大的值。
  • 在 AuthServiceProvider.phpboot 方法和 $this->registerPolicies() 下面使用以下代码;

    $this->注册政策();

    护照::路线(); Passport::refreshTokensExpireIn(Carbon::now()->addDays(30));

  • 忽略 Laravel 5.3 文档,使用刷新令牌实现令牌续订方法。

最新更新