Laravel 如果我需要后端控制器的中间件构造函数?

Laravel 如果我需要后端控制器的中间件构造函数?,laravel,Laravel,在Laravel 6中,我定义了路线: Route::group(['middleware' => 'auth:api', 'prefix' => 'adminarea', 'as' => 'adminarea.'], function ($router) { Route::resource('ads', 'Admin\AdController'); Route::group(['prefix' => 'ads'], function ($router)

在Laravel 6中,我定义了路线:

Route::group(['middleware' => 'auth:api', 'prefix' => 'adminarea', 'as' => 'adminarea.'], function ($router) {

    Route::resource('ads', 'Admin\AdController');
    Route::group(['prefix' => 'ads'], function ($router) {
        Route::resource('/{ad_id}/categories', 'Admin\AdCategoriesController');
    });
    ...
app/Http/Controllers/Admin/AdCategoriesController.php的构造函数有一行:

<?php

namespace App\Http\Controllers\Admin;

use Auth;
...

class AdCategoriesController extends Controller
{
    private $requestData;


    public function __construct()
    {
        $this->middleware('auth:api', ['except' => []]);
        $request           = request();
        $this->requestData = $request->all();
    }

如您所知,
中间件
可以同时分配给
路由
s和
控制器
s

  • 当分配给
    路线时
    只会影响该
    路线

  • 当分配给a
    Route::group
    时,它将影响该组中的所有
    Route

  • 当分配给
    控制器
    构造函数时,它将影响
    控制器

  • 当分配给
    控制器
    方法时,它将影响该方法(以及相应的
    路线
    s)


您可以在路由控制器中使用中间件

您只能将中间件添加到一个或多个路由组。像这样:

Route::group([], function ($router) {
    $router->group(['middleware' => ['throttle'] ,'namespace' => '\Laravel\Passport\Http\Controllers'], function ($router) {
        $router->post('login', [
            'as' => 'auth.login',
            'uses' => 'AccessTokenController@issueToken',
        ]);
    });

    $router->post('register', [
        'as' => 'auth.register',
        'uses' => 'AuthController@register',
    ]);
});
另一种语法:

Route::group([], function ($router) {
        $router->group(['namespace' => '\Laravel\Passport\Http\Controllers'], function ($router) {
            $router->post('login', [
                'as' => 'auth.login',
                'middleware' => ['throttle'] ,
                'uses' => 'AccessTokenController@issueToken',
            ]);
        });

        $router->post('register', [
            'as' => 'auth.register',
            'uses' => 'AuthController@register',
        ]);
    });
Route::get('/url','YourController@yourMethod')->middleware('yourMiddleware');
另一种语法:

Route::group([], function ($router) {
        $router->group(['namespace' => '\Laravel\Passport\Http\Controllers'], function ($router) {
            $router->post('login', [
                'as' => 'auth.login',
                'middleware' => ['throttle'] ,
                'uses' => 'AccessTokenController@issueToken',
            ]);
        });

        $router->post('register', [
            'as' => 'auth.register',
            'uses' => 'AuthController@register',
        ]);
    });
Route::get('/url','YourController@yourMethod')->middleware('yourMiddleware');
或者,您可以在控制器中使用\u构造

但您不需要在路由和控制器中同时使用中间件


可以帮助您。

如果要在类中使用中间件,那么它也会影响该特定类中定义的其他函数。如果在分组中定义中间件,则属于特定组的路由是唯一受影响的路由。