php - 如何从 JWT Auth 令牌中解码用户信息 - 使用 laravel
问题描述
我以这种方式从 JWT Auth 令牌获取用户信息:
{
"user": {
"id": 5,
"email": "shahzad@chiro.com",
"status": 0,
"created_at": "2019-04-12 07:33:28",
"updated_at": "2019-04-12 07:33:28",
}
}
和我的控制器:
public function getAuthenticatedUser()
{
try {
if (! $user = \Tymon\JWTAuth\Facades\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());
}
return response()->json(compact('user'));
}
但我还想获取额外的信息,比如这个用户令牌来自哪个模块我想正确验证这个令牌,目前我有不同的模块,比如Chiro
,PT
和ACCU
。当我登录用户时,我以 JSON 格式获得了此信息。
{
"status": true,
"message": "Login successfully",
"data": {
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9sb2NhbGhvc3RcL2ZlYXR1cmUtbWFzdGVyXC9hcGlcL2ZkX2xvZ2luIiwiaWF0IjoxNTU1MDYzMTAzLCJleHAiOjE1ODY1OTkxMDMsIm5iZiI6MTU1NTA2MzEwMywianRpIjoiMFMxU3EzOVJRbVhYZFB6NCIsInN1YiI6NywicHJ2IjoiNGFjMDVjMGY4YWMwOGYzNjRjYjRkMDNmYjhlMWY2MzFmZWMzMjJlOCIsImFjY2Vzc19tb2R1bGUiOiJjaGlybyIsIm1vZHVsZV9pZCI6NiwidXNlcl9pZCI6N30.pJyWSlvHfJhn5bHk4_By-cAt5jzy15QgtlhGdyerriQ",
"userData": {
"id": 7,
"email": "shahzad12@chiro.com",
"status": 0,
"created_at": "2019-04-12 09:58:01",
"updated_at": "2019-04-12 09:58:01",
"created_by": null,
"updated_by": null,
"is_super_admin": null,
"basicInfo": null
},
"userInfo": {
"id": 103,
"user_id": 7,
"clinic_name": "Health care",
"first_name": "Dr wick",
"middle_name": "john",
"last_name": "David",
"cell_phone_no": "111-111-1111",
"phone_extension": 877,
"doc_email": "nasir123@gmail.com",
},
"module": {
"id": 6,
"type": "Chiro",
"slug": "chiro"
},
当我登录此响应时说这是来自Chiro
模块的用户,当我使用我共享的方法验证此令牌时,它只返回用户电子邮件而不是模块。当我验证令牌时我应该如何处理这种情况我也应该得到模块?您的帮助将不胜感激。
解决方案
推荐阅读
- delphi - Delphi XE2 - 调用读取函数回调时,DFM 流随机为空或损坏
- python - 如何为神经网络提供两个不同大小的输入?
- filter - 来自列范围 X 的值匹配以返回来自同一行但不同列范围的值
- c++ - 需要有关声明未在此范围内声明的代码的代码的帮助 (C++)
- java - tkinter python程序可以镜像到android应用程序上吗
- python - 修改CustomUser模型的字段顺序
- jquery - 检测音频何时将在 Jquery 中结束
- datetime - Flutter - 将分钟转换为 H:M
- android - 从 .gradle 和 .idea 中删除所有内容是否安全?
- tampermonkey - Tampermonkey 的“存储”选项卡在哪里编辑存储内容?