Laravel 如果我需要后端控制器的中间件构造函数?
在Laravel 6中,我定义了路线: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)
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构造
但您不需要在路由和控制器中同时使用中间件
可以帮助您。如果要在类中使用中间件,那么它也会影响该特定类中定义的其他函数。如果在分组中定义中间件,则属于特定组的路由是唯一受影响的路由。