Laravel 5.1中间件之前和之后的区别

时间:2015-11-22 18:44:03

标签: laravel middleware

我唯一知道的是我必须这样做:

$response = $next($request)
// some logic
return $response;

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

  • 在应用程序处理请求之前/之后 - 它究竟意味着什么(除了之前运行和之后运行)?
  • 内核中受保护变量中定义的全局中间件如何与中间件或共同之后的内容不同(导致创建句柄方法的规则相似)?

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

1 个答案:

答案 0 :(得分:3)

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

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

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