是否可以向资源路由的所有或某些项添加中间件?
例如...
<?php
Route::resource('quotes', 'QuotesController');
此外,如果可能的话,我希望除了 index
和 show
之外的所有路由都使用 auth
中间件。这是需要在控制器内完成的吗?
是否可以向资源路由的所有或某些项添加中间件?
例如...
<?php
Route::resource('quotes', 'QuotesController');
此外,如果可能的话,我希望除了 index
和 show
之外的所有路由都使用 auth
中间件。这是需要在控制器内完成的吗?
在QuotesController
的构造函数中,您可以使用以下代码:
$this->middleware('auth', ['except' => ['index','show']]);
参考资料:Laravel 5中的控制器中间件
你可以使用路由组(Route Group)与中间件(Middleware)概念:
http://laravel.com/docs/master/routingRoute::group(['middleware' => 'auth'], function()
{
Route::resource('todo', 'TodoController', ['only' => ['index']]);
});
Route::resource('todo', 'TodoController', ['except' => ['index']]);
来从身份验证中间件中仅排除索引吗? - Anadi MisraRoute::group(['middleware' => 'auth:api'], function() {
Route::resource('categories', 'CategoryController', ['except' => 'show,index']);
});
LARAVEL 8.x 更新
web.php:
Route::resource('quotes', 'QuotesController');
public function __construct()
{
$this->middleware('auth')->except(['index','show']);
// OR
$this->middleware('auth')->only(['store','update','edit','create']);
}
参考: 控制器中间件
我一直在寻找更好的Laravel 5.8+解决方案。
以下是我的做法:
将中间件应用于资源,除了那些你不想应用中间件的部分。(这里是索引和展示)
Route::resource('resource', 'Controller', [
'except' => [
'index',
'show'
]
])
->middleware(['auth']);
然后,创建在第一个路由中未包含的资源路由。也就是 index 和 show。
Route::resource('resource', 'Controller', [
'only' => [
'index',
'show'
]
]);