在我尝试使用
生成自定义令牌的文档之后$payload['user_id'] = $account->provider_user_id;
$token = JWTAuth::encode($payload);
return Response::json(compact('token'));
结果
传递给Tymon \ JWTAuth \ Manager :: encode()的参数1必须是Tymon \ JWTAuth \ Payload的实例,给出的数组
答案 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'));