簡體   English   中英

Laravel 5. *多個中間件整體控制器

[英]Laravel 5.* multiple middleware whole controller

如何為特定控制器中的所有路由定義多個中間件? 是的,我可以在__constructor中定義一個midd,如:

$this->middleware( 'somemidd' );

是的,我可以為路線定義多個midd:

Route::get('/', ['middleware' => ['MyMiddleware', 'MySecondMiddleware'], function () {
    //
}]); 

為Route :: resourse定義多個midds不是解決方案,因為我在我的控制器中有自定義方法。 而且我不想把midd放在全局范圍內Kernel \\ protected $ middleware = ...

我怎么解決這個問題?

您可以使用中間件組

/**
 * 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',
        ]]);
    }
}

更多: HTTP控制器HTTP中間件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM