我在使用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
一次获取角色,一次用于验证用户。如果有人可以在单个数据库命中建议更好的方法,那将是很好的。