Я использую пакет JWT-Auth в своем проекте Laravel 5.6.
У меня есть простой тест, который использует метод 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();
Я посмотрел на исходный класс, и это похоже на причину;
$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()
должен содержать полезную нагрузку, которую вы искали, хотя я не уверен в этом, так как не могу проверить.
Надеюсь, поможет 🙂
Других решений пока нет …