2017-03-13 34 views
0

所以我有一个API,我一直在开发和一些路线显然需要一个用户实例,以便我完全完成服务器上的请求侧。Laravel 5.4 Passport限制个人访问令牌在特定路由上的使用

我想知道的是,有没有办法限制laravel中的某些路由,以便它需要一个完整的oauth标记而不是一个个人访问标记。 目前我能看到过滤出来的唯一方法是添加令牌范围。但是我宁愿避免添加范围只筛选出使用个人访问令牌VS客户端....

思考...

感谢

CITTI

回答

1

那么按照我的理解,个人访问令牌与特定用户一起分配。下面是从docs

一旦你创建了一个个人访问客户端,您可以发出使用上的用户模型实例的createToken方法给定用户令牌。

个人访问令牌发出针对特定用户:

$user = App\User::find(1); 

// Creating a token without scopes... 
$token = $user->createToken('Token Name')->accessToken; 

这样,你打的是Bearer $token请求到/user路线:

Route::get('/user', function() { 
    return Auth::user(); 
})->middleware('auth:api'); 

和响应是准确的用户,为其创建PAT。因此,您需要的仅仅是保护您的路线与auth:api中间件

+0

如果用户在API服务器上进行身份验证,将返回经过身份验证的用户。 API应该是无状态的。没有人可以在技术上登录,这就是为什么你将不得不通过传递的令牌来区分... – Citti

+0

好吧@Citti所以当用户没有登录,并尝试访问这条路线让说,通过API请求,然后他得到'未经授权的401'回应。所以可能是在这种情况下显示登录弹出或如此 –

+0

是的,我明白了,但我宁愿不要那样做。我的应用程序可以正确处理两种情况......如果您想代表用户采取行动,请创建一个客户端并通过正常的oauth流程。如果您只需要拉取数据或处理一些不需要用户操作的创建路由,那么可以使用个人访问令牌。我不想做的是添加更多的功能来替代现有的工作流程。我只是想阻止他们根据他们试图击中的路线使用其中一个或另一个。路由1接受个人令牌+ oauth | Route2只接受oauth – Citti

相关问题