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

Jwt 基于令牌而不是通过mysql表对用户进行身份验证,jwt,laravel-5.3,Jwt,Laravel 5.3,第二轮:试图让这一点更清楚: 我有两个完全独立的服务(都是laravel 5.3) 一种是身份验证服务,它可以访问用户mysql数据库、权限和角色 另一个是资源服务。它完全不关心用户表,并且没有访问任何用户表的权限 这意味着任何类型的Auth::loginById()。。。不会在此服务中工作,因为没有用户表 我想使用JWT让用户访问资源服务API,并让用户Auth充当用户已通过身份验证的角色——但同样,我所拥有的只是JWT-no user表中的声明。这些声明包括一些关于用户id、名称等的信息。我

第二轮:试图让这一点更清楚:

我有两个完全独立的服务(都是laravel 5.3)

一种是身份验证服务,它可以访问用户mysql数据库、权限和角色

另一个是资源服务。它完全不关心用户表,并且没有访问任何用户表的权限

这意味着任何类型的Auth::loginById()。。。不会在此服务中工作,因为没有用户表

我想使用JWT让用户访问资源服务API,并让用户Auth充当用户已通过身份验证的角色——但同样,我所拥有的只是JWT-no user表中的声明。这些声明包括一些关于用户id、名称等的信息。我想这样做:

$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()->name


我在问我是在做一些异国情调的事情,还是这是好东西。这将在哪里失败

你的问题不清楚。您是在询问有关您的体系结构的安全问题,还是关于包含和提取这些声明的实现?@pedrofb再次试图让事情变得更清楚。