JWT генерирует собственный токен "массив задан" - PullRequest
0 голосов
/ 06 сентября 2018

Следуя документации, я пытаюсь сгенерировать пользовательский токен, используя

$payload['user_id'] = $account->provider_user_id;
$token = JWTAuth::encode($payload);
return Response::json(compact('token'));

В результате получается

Аргумент 1, передаваемый Tymon \ JWTAuth \ Manager :: encode (), должен быть экземпляром Tymon \ JWTAuth \ Payload, заданный массив

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Это довольно старо, но после долгой борьбы я наконец нашел решение для этого.Большинство решений, которые я нашел в Интернете, говорят, что проблема была в файле конфигурации jwt в параметрах exp (срок действия) для токена.

Это не решило проблему для большинства пользователей, и это потому, чтопроблема в параметре sub.

Большинство решений похоже на @ Brenden's, но вы получите там ошибку, что вы не передаете правильные претензии.Что будет работать, так это использовать его так:

$payload = JWTFactory::sub('token')->data($tempToken)->make();

$tempToken - это ваш массив пользовательских полей.

После того, как вы сможете просто:

$token = JWTAuth::encode($payload)->get(); // mind the ->get()

return response()->json(compact('token'));
0 голосов
/ 06 сентября 2018

Возможно, это немного приблизит вас?

$customClaims = array(
    'user_id' => $account->provider_user_id
);
$payload = JWTFactory::make($customClaims);
$token = JWTAuth::encode($payload);

Кроме того, если вы используете бэкэнд Laravel, вы можете легко получить текущий зарегистрированный идентификатор пользователя на любом контроллере, используя:

$user_id = \Auth::user()->id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...