基于令牌而不是通过mysql表对用户进行身份验证

时间:2016-12-27 20:40:13

标签: jwt laravel-5.3

第二轮:试图让这个更清楚:

我有两个完全独立的服务(两个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() - >名称......

我在问这里是不是在做异国情调,或者这是好事。这会失败吗?

0 个答案:

没有答案