在lawvel中在JWT声明中包含来自用户表的自定义字段的更好方法

时间:2016-11-03 06:07:48

标签: laravel jwt

我在使用tymon/jwt-auth构建的项目中使用JWT authentication liibrary laravel

在我的mysql users表中,我有一个role_id列。我希望在登录时生成JWT token's claim中包含它,以便我可以在后续请求中使用我的JWT令牌实现基于角色的ACL

以下是我试图让它发挥作用

    $credentials = $request->only('email', 'password');
    $userModel = User::where('email',$request->input('email'))->get()->first();
    $role = $userModel->roles_id;
    $customClaim = ['role' => $role];

    try 
    {
        // attempt to verify the credentials and create a token for the user
        if (! $token = JWTAuth::attempt($credentials, $customClaim)) 
        {
            //return 401 error
        }
    } 
    catch (JWTException $e) 
    {
        //return 500 error
    }

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

上面的代码工作正常,但上面的代码问题是登录时我必须两次点击database一次获取角色,一次用于验证用户。如果有人可以在单个数据库命中建议更好的方法,那将是很好的。

0 个答案:

没有答案