路由中的中间件与控制器构造函数中的中间件有什么区别?

时间:2019-12-05 13:47:30

标签: php laravel

我对laravel还是很陌生,想深入了解中间件。我想知道在路由上附加中间件或在控制器的构造函数中添加中间件之间的主要区别是什么。
例如,它是名为UserController

的控制器的构造函数。
public function __construct() {
  $this->middleware('age');
}

我们假设它是同一控制器的路由,即UserController

Route::get('user/profile', function () {
    //
})->middleware('age');

我的主要问题是我应该在路由和控制器的构造函数中还是在其中之一中添加中间件?

3 个答案:

答案 0 :(得分:1)

两者都将执行相同的任务,只是您可以用两种不同的方式编写。

However, it is more convenient to specify middleware within your controller's constructor. Using the middleware method from your controller's constructor, you may easily assign middleware to the controller's action. You may even restrict the middleware to only certain methods on the controller class.

https://laracasts.com/discuss/channels/laravel/middleware-in-controller-or-on-route

答案 1 :(得分:0)

根据情况,如果控制器中有条件,则必须使用第一种情况还是最好使用第二种情况。

答案 2 :(得分:0)

public function __construct() {
  $this->middleware('age');
}
```````````````````````````````````````````````````````````````````````````````
Global middlewares are those that will be running during every HTTP request of your application. In the $middleware property of your app/Http/Kernel.php class, you can list all the global middleware for your project.

```````````````````````````````````````````````````````````````````````
Route::get('user/profile', function () {
    //
})->middleware('age');
````````````````````````````````````````````````````````````````````````
When you want middlewares to specific routes, you have to add the middleware with a key for your app/Http/Kernel.php file and such middlewares are called route middleware. $routeMiddleware by default holds entries for the middleware that are already incorporated in Laravel. For adding your custom middleware, you need to append them to the list and add a key of your choice

[link]https://www.w3schools.in/laravel-tutorial/middleware/