The Laravel 5 documentation describes two ways of assigning Middleware:
- Assign middleware to the controller's route.
- Specify middleware within your controller's constructor.
However, I realised that any code written in the controllers __construct()
function will run before the Middleware, even if the Middleware is declared on the first line of the controller's __construct
function.
I found a bug report for a similar issue in the Laravel github repository. However a collaborator closed the issue stating "This is the expected behaviour.".
I am thinking that middleware
should be "layers" outside the application, while the __construct
function is part of the application.
Why is the __construct
function executed before the middleware (given it is declared before middleware runs)? and why this is expected?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…