首页 > 解决方案 > 如何从 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'));
}

但我还想获取额外的信息,比如这个用户令牌来自哪个模块我想正确验证这个令牌,目前我有不同的模块,比如ChiroPTACCU。当我登录用户时,我以 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模块的用户,当我使用我共享的方法验证此令牌时,它只返回用户电子邮件而不是模块。当我验证令牌时我应该如何处理这种情况我也应该得到模块?您的帮助将不胜感激。

标签: phplaraveljwttoken

解决方案


推荐阅读