即使提供了getPayload,也需要JWT_Auth返回令牌

时间:2018-07-13 00:18:21

标签: php laravel laravel-5 jwt-auth

我正在Laravel 5.6项目中使用JWT-Auth软件包。

我有一个使用getPayload方法的简单测试,但是它一直在返回;

Tymon\JWTAuth\Exceptions\JWTException: A token is required

到目前为止,我的方法如下;

$user = factory(User::class)->create();

$token = JWTAuth::fromUser($user);
$payload = JWTAuth::getPayload($token);

如果我执行dd($token),则会正确吐出用户令牌。

如果其他人遇到了这个问题,我希望获得帮助。

欢呼

1 个答案:

答案 0 :(得分:1)

在您的情况下,如果您将其命名为:

$payload = JWTAuth::setToken($token)->getPayload();

我查看了源类,它看起来像是为什么;

$payload = JWTAuth::getPayload($token);

返回A token is required错误是因为它寻找$this->token变量。但是,当您使用JWTAuth::fromUser($user);进行设置时,不会为其设置任何值。

public function fromUser(JWTSubject $user)
{
    return $this->fromSubject($user);
}

...

public function fromSubject(JWTSubject $subject)
{
    $payload = $this->makePayload($subject);
    return $this->manager->encode($payload)->get();
}

在这里您可以看到fromSubject()实际上返回了有效负载。因此,fromUser()的返回结果实际上应该包含您正在寻找的有效负载,尽管由于无法测试,我不确定这一点。

希望它会有所帮助:)