laravel - Laravel 运行一组带有特定守卫的中间件
问题描述
我有两个不同的警卫api警卫和运输警卫,我使用 laratrust 包来管理用户的角色和权限
Route::get('/requests', 'RequestController@index')->middleware('ability:owner|administrator,read-requests|all-requests');
只有当守卫是api守卫时,我才需要运行上面的 laratrust 中间件
注意:- 来自 laratrust docs https://laratrust.santigarcor.me/docs/6.x/usage/middleware.html#concepts 我发现你可以像这样指定你的后卫,但它不起作用
Route::get('/requests', 'RequestController@index')->middleware('ability:owner|administrator,read-requests|all-requests|guard:api');
解决方案
我从未使用过 Laratrust,但如果它是一个适用于整个路由组的中间件,我认为您可以在数组的app/Http/Kernel.php
文件中定义它。$middlewareGroups
protected $middlewareGroups = [
'web' => [
'ability:owner',
'administrator',
'read-requests',
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Laravel\Jetstream\Http\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:api',
'ability:owner',
'administrator',
'read-requests',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
推荐阅读
- bash - 按参数过滤的总数 - bash
- javascript - 如何从图表 js 中删除笛卡尔轴?
- android - 选项卡布局和 ViewPager 之间的区别?
- javascript - 如何使用“标头已发送”常见错误(gCaptcha + 重定向)在 php 中重定向
- javascript - 用一些逻辑反应范围滑块
- mysql - MAMP - MySQL 似乎正在运行但不接受连接错误
- python - 如何从所有目录的安然电子邮件数据集中提取所有电子邮件文本
- php - 如何从分形库中删除数据
- python - 创建DataFrame时如何保留列顺序?
- google-bigquery - 在外部生成的草图上使用 HLL_COUNT.MERGE/EXTRACT