Laravel 在资源路由控制器的特定路由上应用中间件
Posted
技术标签:
【中文标题】Laravel 在资源路由控制器的特定路由上应用中间件【英文标题】:Laravel Apply middlware on specific route of resource route controller 【发布时间】:2021-03-05 21:10:45 【问题描述】:我想在资源控制器的创建路由上应用中间件,但对如何设置中间件感到困惑。通常我们可以像这样添加中间件
Route::get('api/users/user', function (App\Models\User $user)
return $user->email;
)->middleware('name');
但是当我们有一个资源控制器时,我怎么能在资源控制器的单个路由上应用中间件。
Route::resource('front-pages','Admin\FrontPagesController');
【问题讨论】:
【参考方案1】:创建一个__construct()
函数
在 FrontPagesController.php 中
public function __construct()
$this->middleware('auth', ['except' => ['index','show']]);
参考链接https://laravel.com/docs/8.x/controllers#controller-middleware
所有可能的功能
/**
* Instantiate a new controller instance.
*
* @return void
*/
public function __construct()
$this->middleware('auth');
$this->middleware('log')->only('index');
$this->middleware('subscribed')->except('store');
【讨论】:
我也可以只通过而不是除了?? 是的,你可以做任何事【参考方案2】:你可以使用
Route::resource('front-pages','Admin\FrontPagesController')->only('fornt-page.whatever name');
您可以将其与中间件分组
【讨论】:
【参考方案3】:Route::middleware('name')->resource('front-pages' , 'Admin\FrontPagesController');
参考 laravel 文档:https://laravel.com/docs/8.x/middleware#introduction
【讨论】:
以上是关于Laravel 在资源路由控制器的特定路由上应用中间件的主要内容,如果未能解决你的问题,请参考以下文章