【发布时间】:2016-09-18 08:43:44
【问题描述】:
您好,我正在尝试从给定的令牌中获取电子邮件用户。我试过这个来解析令牌,但我总是得到空或根据这个{} 值example :
public function getAuthenticatedUser()
{
try {
if (! $user = JWTAuth::parseToken()->authenticate()) {
return response()->json(['user_not_found'], 404);
}
} catch (Tymon\JWTAuth\Exceptions\TokenExpiredException $e) {
return response()->json(['token_expired'], $e->getStatusCode());
} catch (Tymon\JWTAuth\Exceptions\TokenInvalidException $e) {
return response()->json(['token_invalid'], $e->getStatusCode());
} catch (Tymon\JWTAuth\Exceptions\JWTException $e) {
return response()->json(['token_absent'], $e->getStatusCode());
}
// the token is valid and we have found the user via the sub claim
return $user;
}
我将令牌放在 url 上,例如 localhost:8000/admin/user/get_all?token={{token}},我还在标题中添加令牌token 注意:我正在使用 postman 提出请求。但是当我尝试将解析值传递给响应时,我总是得到{} 值:
$result = $this->getAuthenticatedUser();
return response()
->json([
'status'=>'success',
'user'=>$result,
'data'=> $users,
]);
如果我在这里错了,请纠正我:解析含义以获取经过身份验证的用户的信息,例如电子邮件?
注意:我使用的是 laravel 5.2,并且在路由上我内置了中间件 jwt-auth,我正在使用这个library for generate the token。
【问题讨论】:
-
请添加 $ 登录 {{token}},例如:
http://localhost:8000/admin/user/get_all?token={{$token}}。另外,使用return response()->json($user);而不是return $user; -
我正在使用邮递员添加 {{token}},我已经尝试了您的建议。
-
哦,我明白了,我以为你在刀片的某个地方使用了它……哈哈……一旦你发送请求,你就没有得到任何回应?一点反应都没有?我刚刚测试了您的代码,它似乎工作正常。你能告诉我这个函数是你的中间件还是任何其他类的一部分?你用的路由,是不是用你的中间件jwt-auth?
-
我没有得到用户的值,传给json的时候是空的,你得到值了吗?
-
中间件使用的是jwt-auth,并且这个函数是我的Controller类的一部分,所以在我的控制器中我调用了这个函数来解析token,然后将它传递给json