Laravel 5.1中前后中间件的区别

Laravel 5.1中前后中间件的区别,laravel,middleware,Laravel,Middleware,我只知道我必须这样做: $response = $next($request) // some logic return $response; 如果我在应用程序处理请求后以及使用全局中间件时需要中间件,但我完全不知道为什么要这样做(我注意到我无法访问$request->user(),例如,如果我没有使用全局中间件声明$response变量,但我不知道为什么)。我无法理解的是: 在应用程序处理请求之前/之后-它的确切含义是什么(在请求之前和之后第二次运行除外) 内核中受保护变量中定义的全局中间

我只知道我必须这样做:

$response = $next($request)
// some logic
return $response;
如果我在应用程序处理请求后以及使用全局中间件时需要中间件,但我完全不知道为什么要这样做(我注意到我无法访问$request->user(),例如,如果我没有使用全局中间件声明$response变量,但我不知道为什么)。我无法理解的是:

  • 在应用程序处理请求之前/之后-它的确切含义是什么(在请求之前和之后第二次运行除外)
  • 内核中受保护变量中定义的全局中间件与后中间件有何不同,或者它们有何共同之处(因为创建句柄方法时的规则类似)

我曾试图追踪laravel框架代码本身,但我认为我的技能还不够。

想想在执行操作之前检查访问控制的中间件。如果要拒绝访问,则必须在处理请求之前运行。请求处理通常是在相关控制器操作中完成的

另一个例子是cookie加密和解密。解密是在之前的中间件中完成的,这样在处理请求时,您可以正常地读写cookie。然后,之后的中间件在将cookie发送到客户端之前对其进行加密


全局中间件在每个请求上运行,而不是分配给某个对象(例如路由或控制器)的中间件。

有一个很好的解释。啊哈@Bogdan链接不再工作了你可以使用