JWT_Auth, возвращающий токен, требуется для getPayload, даже если он указан

Я использую пакет 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) он выплевывает токен пользователя правильно.

Если кто-то еще столкнулся с этим, я хотел бы помочь.

ура

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() должен содержать полезную нагрузку, которую вы искали, хотя я не уверен в этом, так как не могу проверить.

Надеюсь, поможет 🙂

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]