我有两个完全独立的服务(两个laravel 5.3)。
一种是可以访问用户mysql数据库,权限和角色的身份验证服务。
另一种是资源服务。它不关心用户表,也无权访问任何用户表。
这意味着任何类型的Auth :: loginById()...都不会在此服务中工作,因为没有用户表。
我想使用JWT让用户访问资源服务API,并让用户Auth表现得好像用户已经过身份验证 - 但是再一次 - 我所拥有的只是JWT中的声明 - 没有用户表。索赔包括一些关于用户的信息 - 身份,姓名等。我想做这样的事情:
$userObj = JWTAuth::parseToken()->getPayload()->claims; // { id:4, name: Birdman, email: birdy414141@gmail.com}
Auth::login($userObj)
然后可以像往常一样访问用户对象
echo Auth::user()->name // Birdman
有人试过这样的事吗?
我发现这样做或多或少有效:
$u = new User();
$u->user_id = (JWTAuth::parseToken()->getPayload()->get('sub'));
$u->name = (JWTAuth::parseToken()->getPayload()->get('name'));
显然我不能在这里使用$ u-> save()因为再次 - 没有用户数据库。
我可以这样做:
Auth::login($u);
然后我可以稍后调用Auth :: user() - >名称......
我在问这里是不是在做异国情调,或者这是好事。这会失败吗?