【问题标题】:Laravel 5.6 passport api authentication not working in get requestLaravel 5.6 护照 API 身份验证在获取请求中不起作用
【发布时间】:2018-10-03 09:12:00
【问题描述】:

我正在制作单页应用程序,在处理 get 请求时,我已经通过了 X-CSRF-TOKENX-Requested-With 标头。我还将 \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class 包含在 Web 中间件组中。 我在 api.php 中的路线看起来像

Route::get('categories','Api\Categories@index')->middleware('auth:api');

但请求指定的 url 显示未经身份验证的消息。

【问题讨论】:

  • 您是否使用身份验证参数创建了获取请求?
  • 您是否在 config/auth.php 文件中将 API 身份验证驱动程序设置为 passport
  • 发送授权标头'Bearer {token}
  • 您认为提供的答案中是否有某些内容无法解决您的问题?如果是这样,请对答案发表评论,以澄清究竟需要解决哪些尚未解决的问题。如果它解决了您的问题,那么Accept Answers

标签: php laravel api


【解决方案1】:

在请求中发送授权头

Authorization: Bearer eYz-your-passport-generated-token

【讨论】:

    【解决方案2】:

    不久前我遇到了完全相同的问题。这就是我为修复它所做的,更多细节在这篇文章中:https://github.com/laravel/passport/issues/47

    所以这通常是为了修复 oAuth 客户端令牌:在 Passport.php 第 167 行中,到期日期设置为现在 + 100 年。

    return static::$tokensExpireAt? Carbon::now()->diff(static::$tokensExpireAt): new DateInterval('P100Y');
    

    如果您将其设置为,即 P1Y,则它正在工作。比如:

    return static::$tokensExpireAt? Carbon::now()->diff(static::$tokensExpireAt): new DateInterval('P1Y');
    

    下面几行刷新令牌也是如此:

    return static::$refreshTokensExpireAt? Carbon::now()->diff(static::$refreshTokensExpireAt): new DateInterval('P1Y');
    

    这是针对个人令牌的:以及 PassportServiceProvider.php 第 84 行,关于个人令牌:

    $server->enableGrantType(new PersonalAccessGrant, new DateInterval('P1Y'));
    
    Hope it helps ! :)
    

    【讨论】:

      猜你喜欢
      • 2019-02-28
      • 1970-01-01
      • 2017-03-06
      • 2019-06-14
      • 2015-08-21
      • 2019-05-21
      • 2013-06-25
      • 2016-10-29
      • 1970-01-01
      相关资源
      最近更新 更多