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

JWT_Auth returning a token is required for getPayload even though one is supplied

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

如果其他人 运行 对此感兴趣,我希望得到一些帮助。

干杯

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

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

我查看了来源 class,这似乎是原因;

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

returns 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() 实际上是 returns 有效负载。所以 fromUser() 的返回结果实际上应该包含你正在寻找的有效载荷,虽然我不确定这一点,因为我无法测试。

希望对您有所帮助:)