如何创建具有用户角色的 JWT 令牌(Spatie JWT Web 令牌)

我想在登录后使用令牌传递用户的角色。而不是像下面这样传递


 return response()->json([  

            'success' => true, 

            'access_token' => $token,

            'token_type' => 'bearer',

             'role' => auth('api')->user()->getRoleNames()

            /* 'expires_in' => auth('api')->factory()->getTTL() * 60 */

  ]);

我想使用 JWT 令牌对用户的角色进行编码。我试过的


 public function login()

    {

        $credentials = request(['email', 'password']);


        if (! $token = auth()->guard('api')->attempt($credentials)) {

            return response()->json(['errors' => 'In-valid username and Password'], 401);

        }

        return $this->respondWithToken($token);

    }


  protected function respondWithToken($token)

    {


        $role =auth('api')->user()->getRoleNames();

        $payload = JWTFactory::make($role); 

        $token = JWTAuth::encode($payload);


        return response()->json([  

            'success' => true, 

            'access_token' => $token,

            'token_type' => 'bearer',

        ]);

    }

当我尝试这个时,我没有得到令牌。我已经看过这个文档https://github.com/tymondesigns/jwt-auth/wiki/Creating-Tokens来做到这一点。


一只名叫tom的猫
浏览 102回答 1
1回答

慕妹3146593

在这里,我们需要使用用户角色创建自己的令牌。对我有用的代码可能对其他人有帮助。 public function login()    {        $credentials = request(['email', 'password']);        if (!auth()->guard('api')->claims(['role' => 'bar'])->attempt($credentials)) {            return response()->json(['errors' => 'In-valid username and Password'], 401);        }        $token = auth('api')->claims(['role' => str_replace(['["', '"]', '/', '*'], '',auth('api')->user()->getRoleNames())])->attempt($credentials);        return $this->respondWithToken($token);    } protected function respondWithToken($token)    {        auth('api')->payload($token);        return response()->json([              'success' => true,             'access_token' => $token,            'token_type' => 'bearer',        ]);    }   
打开App,查看更多内容
随时随地看视频慕课网APP