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

时间:2018-09-06 14:58:57

标签: 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的实例,给出的数组

2 个答案:

答案 0 :(得分:0)

也许这会让您更接近一点?

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

此外,如果您使用的是Laravel的后端,则可以使用以下命令轻松地在任何控制器中获取当前登录的用户ID:

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

答案 1 :(得分:0)

这有点旧,但是在奋斗了一段时间之后,我终于找到了解决方案。我在互联网上找到的大多数解决方案都说,问题出在令牌的exp参数(失效日期)的jwt配置文件中。

这不能解决大多数用户的问题,这是因为问题出在sub参数中。

大多数解决方案就像@Brenden的解决方案一样,但是您会因为没有通过正确的声明而出错。可以这样使用它:

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

$tempToken是您的自定义字段数组。

简单之后:

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

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