2

我在我的 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)它会正确吐出用户令牌。

如果其他人遇到此问题,我会很乐意提供帮助。

干杯

4

1 回答 1

7

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

$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()实际上应该包含您正在寻找的有效负载,尽管我不确定这一点,因为我无法测试。

希望能帮助到你 :)

于 2018-07-13T06:10:58.910 回答