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

2 php laravel laravel-5 jwt-auth

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

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

Tymon\JWTAuth\Exceptions\JWTException: A token is required
Run Code Online (Sandbox Code Playgroud)

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

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

$token = JWTAuth::fromUser($user);
$payload = JWTAuth::getPayload($token);
Run Code Online (Sandbox Code Playgroud)

如果我这样做,dd($token)它会正确地吐出用户令牌。

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

干杯

Nim*_*mal 6

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

$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);
}
Run Code Online (Sandbox Code Playgroud)

...

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

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

希望能帮助到你 :)