【问题标题】:Laravel 5.3 Passport tokens have no dotsLaravel 5.3 Passport 令牌没有点
【发布时间】:2017-10-15 21:43:41
【问题描述】:


我已将 Laravel 5.2 上的项目升级到 Laravel 5.3,以便将 Laravel 护照用于 api 路由。
几周后,我仍然无法让令牌工作,我总是收到未经身份验证的错误。
经过所有调查后,我开始调试 Laravel Passport 并了解我的问题在这里(\vendor\lcobucci\jwt\src\Parser.php):

 protected function splitJwt($jwt)
    {
        if (!is_string($jwt)) {
            throw new InvalidArgumentException('The JWT string must have two dots');
        }

        $data = explode('.', $jwt);

        if (count($data) != 3) {
            throw new InvalidArgumentException('The JWT string must have two dots');
        }

        return $data;
    }

我从

获得的令牌
$this->user->createToken($this->user->id.' Access Token')->accessToken;

只是没有点,所以不能爆炸。我不知道为什么,但认为这是主要问题。
我得到的典型令牌如下所示:1369781b342d5181072c7f2859a54102f1dc992f6367c4b8ac37193799ec893438ad1b6ac43af3ae

有人可以帮我解决这个问题吗?
提前致谢

【问题讨论】:

  • 在 laravel 5.3 的 API 身份验证中,它默认使用 OAUTH .. 它不使用 JWT。对于 JWT,您必须更新 auth guard。你有没有用 guard 配置一些东西?
  • 是的,我使用了这条指令laravel.com/docs/5.3/passport。我的 config/auth.php 有这个 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], ],'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ '司机' => '护照', '供应商' => '用户', ], ],`
  • 所以您没有使用 JWT 作为您的身份验证保护。您需要配置 JWT 支持的 auth guard 以使您的 api 由 JWT 进行身份验证。您可以使用以下包来满足您的需求https://github.com/irazasyed/jwt-auth-guard
  • 抱歉,整个任务就是使用 Laravel Passport。 Jwt 出现在这里是因为 laravel/passport 的 composer.json 使用它 prntscr.com/f8uryg 。而且我无法修改供应商文件
  • 看看这个线程..它会澄清。 https://github.com/laravel/passport/issues/222

标签: php oauth laravel-5.3 laravel-passport


【解决方案1】:

我发现它是什么 我试图从 $user->tokens()->first()->id 显示用户令牌 但它不是令牌

我们真的是从 $this->user->createToken($name)->accessToken 而不是从 db 获取令牌

【讨论】:

    猜你喜欢
    • 2017-02-28
    • 1970-01-01
    • 2017-05-31
    • 2019-08-30
    • 2017-09-24
    • 1970-01-01
    • 2021-11-15
    • 2019-03-24
    • 2019-08-27
    相关资源
    最近更新 更多