我有2个用于控制器的中间件clearance
和status
。
我在所有控制器方法上都需要所有clearance
中间件,而对于status
中间件,我需要采用以下方法:索引,创建,存储和销毁。
我在控制器中执行此操作,但这适用于机器人中间件除外。
$this->middleware(['clearance', 'status', ['except' => ['index', 'create', 'store', 'destroy']]]);
有没有办法实现我的目标?
答案 0 :(得分:1)
是的,您可以为每个中间件调用一次中间件功能。
$this->middleware('clearance');
$this->middleware('status')->except(['index', 'create', 'store', 'destroy']);
答案 1 :(得分:0)
您可以使用中间件组:
/**
* 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',
],
];
您还可以在__construct()方法中使用许多中间件:
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',
]]);
}
}