Laravel Gates,如何在 API 路由中使用它们?

标签 laravel jwt

我正在 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/

相关文章:

php - 编辑个人资料不起作用 :/laravel 7

php - Laravel 关系 - 是否有多个*不必要的*数据库调用?

c# - 从 JWT token 获取声明、权限和角色

javascript - 如何从服务器响应中提取 JWT token ?

php - Laravel 从数据库中获取数据

laravel - Bootstrap 4 与 Laravel 5.7 一起安装

go - 无法获取额外信息。来自 gin-jwt 中的登录响应

php - 了解 JWT 和 HTTP 授权 header ? (客户端 : Angular, 服务器:php)

jwt - JWT.io 是如何知道我的公钥的?

mysql - 使用 Redis 缓存实时单页应用程序中使用的数据