Php JWT生成自定义令牌“;“给定的数组”;

Php JWT生成自定义令牌“;“给定的数组”;,php,laravel,jwt,Php,Laravel,Jwt,下面是我尝试使用生成自定义令牌的文档 $payload['user_id'] = $account->provider_user_id; $token = JWTAuth::encode($payload); return Response::json(compact('token')); 结果是 传递给Tymon\JWTAuth\Manager::encode()的参数1必须是给定数组的Tymon\JWTAuth\Payload的实例 也许这会让你更亲近一点 $customClaims

下面是我尝试使用生成自定义令牌的文档

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

传递给Tymon\JWTAuth\Manager::encode()的参数1必须是给定数组的Tymon\JWTAuth\Payload的实例


也许这会让你更亲近一点

$customClaims = array(
    'user_id' => $account->provider_user_id
);
$payload = JWTFactory::make($customClaims);
$token = JWTAuth::encode($payload);
此外,如果您使用的是Laravel的后端,您可以通过以下方式轻松获取任何控制器中当前登录的用户ID:

$user_id = \Auth::user()->id;

这有点老了,但经过一段时间的努力,我终于找到了解决办法。我在互联网上找到的大多数解决方案都说问题出在令牌的
exp
参数(过期日期)中的jwt配置文件中

这并没有解决大多数用户的问题,这是因为问题出在
sub
参数中

大多数解决方案都类似于@Brenden,但您将在那里得到一个错误,即您没有传递正确的声明。有效的方法是这样使用它:

$payload = JWTFactory::sub('token')->data($tempToken)->make();
$tenteoken
是自定义字段的数组

在完成以下简单操作后:

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

return response()->json(compact('token'));