我正在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)
,则会正确吐出用户令牌。
如果其他人遇到了这个问题,我希望获得帮助。
欢呼
答案 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()
的返回结果实际上应该包含您正在寻找的有效负载,尽管由于无法测试,我不确定这一点。
希望它会有所帮助:)