Php Laravel 5.6多个中间件,除1个中间件外
我有两个用于我的控制器、许可和状态的中间件 我需要所有控制器方法上的所有清除中间件,对于状态中间件,我需要清除以下方法:索引、创建、存储和销毁 我在我的控制器中执行此操作,但除了bot中间件之外,这将应用Php Laravel 5.6多个中间件,除1个中间件外,php,laravel,Php,Laravel,我有两个用于我的控制器、许可和状态的中间件 我需要所有控制器方法上的所有清除中间件,对于状态中间件,我需要清除以下方法:索引、创建、存储和销毁 我在我的控制器中执行此操作,但除了bot中间件之外,这将应用 $this->middleware(['clearance', 'status', ['except' => ['index', 'create', 'store', 'destroy']]]); $this->middleware('clearance'); $this-
$this->middleware(['clearance', 'status', ['except' => ['index', 'create', 'store', 'destroy']]]);
$this->middleware('clearance');
$this->middleware('status')->except(['index', 'create', 'store', 'destroy']);
有什么方法可以实现我的目标吗?是的,您可以为每个中间件调用一次中间件函数
$this->middleware(['clearance', 'status', ['except' => ['index', 'create', 'store', 'destroy']]]);
$this->middleware('clearance');
$this->middleware('status')->except(['index', 'create', 'store', 'destroy']);
您可以使用中间件组:
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
],
'api' => [
'throttle:60,1',
'auth:api',
],
])
此外,您还可以在构造方法中使用许多中间件:
class UserController extends Controller{
/**
* Instantiate a new UserController instance.
*
* @return void
*/
public function __construct(){
$this->middleware('auth');
$this->middleware('log', ['only' => [
'fooAction',
'barAction',
]]);
$this->middleware('subscribed', ['except' => [
'fooAction',
'barAction',
]]);
}
}
更多:,这不会覆盖初始中间件?不,所有中间件将按照您添加它们的顺序进行检查。