为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
一只名叫tom的猫 2022-07-09 10:39:23
我想在登录后使用令牌传递用户的角色。而不是像下面这样传递 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来做到这一点。
查看完整描述

1 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

在这里,我们需要使用用户角色创建自己的令牌。对我有用的代码可能对其他人有帮助。


 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',

        ]);

    }   


查看完整回答
反对 回复 2022-07-09
  • 1 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信