我正在 AuthServiceProvider 中为我的 API 服务定义我的 Gates(遵循 Laravel 文档 https://laravel.com/docs/7.x/authorization#gates):
Gate::define('view-users', function ($user) {
return $user->hasAccess(['view-users'])
or $user->inRole(['admin', 'operator']);
});
这是我的路线:
Route::group(['namespace' => 'Api', 'middleware' => ['auth:api']], function () {
Route::get('/users', 'UserController@listing')->name('user.listing')->middleware(['can:view-users']);
});
如何从 Route API 文件中找到要在 Gate 中使用的用户?
但我不太明白这个
$user
在哪里来自。在我的请求中,我发送了一个 Authorization Bearer token 。我应该在我的门内使用它来从数据库中获取正确的用户吗? Laravel 如何知道谁是谁 $user
是?
最佳答案
$user
是当前登录的用户。您不需要提供额外的 $user
, 或者传入用户。
因此,如果您的应用程序当前有一个登录用户,那就是该用户。如果没有登录用户,gate 将返回 false 以保护您的资源。
关于Laravel Gates,如何在 API 路由中使用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61090954/