正如官方文档(https://laravel.com/docs/5.3/passport#introduction)中所述,我已经为 Laravel 5.3 设置了Laravel Passport包。
我希望 API 被移动应用程序使用,所以我正在尝试实现Password Grant Tokens。我创建了一个密码授予客户端,以及令牌请求过程......
$response = $http->post('http://my-app.com/oauth/token', [
'form_params' => [
'grant_type' => 'password',
'client_id' => 'client-id',
'client_secret' => 'client-secret',
'username' => 'my@email.com',
'password' => 'my-password',
'scope' => '',
],
]);
...按预期工作,为我的一个用户返回访问令牌和刷新令牌。
但是现在我想定义一些范围,这样我就可以限制用户的访问......再次按照文档,我在AuthServiceProvider.php的引导方法中定义了它们,例如:
Passport::tokensCan([
'admin' => 'Perform every action',
'user' => 'Perform only normal user actions',
]);
在这种情况下,如果“恶意”普通用户请求一个令牌(使用上面的 POST 调用)指定'scope' => 'admin'
,他或她将获得一个“管理员”令牌......这不是我想要的。
因此,我想知道这种情况下的工作流程如何有效地限制对普通用户的访问,以及我必须在哪里实现范围验证逻辑。
提前致谢。