我唯一知道的是我必须这样做:
$response = $next($request)
// some logic
return $response;
如果我在应用程序处理请求后以及使用全局中间件时需要中间件,但我绝对不知道为什么我必须这样做(我注意到我无法访问$ request-> user()例如,如果我不使用全局middeware声明$ response变量,但我不知道为什么)。我无法理解的是:
我试图追踪laravel框架代码本身,但我认为我的技能还不够。
答案 0 :(得分:3)
考虑在执行操作之前检查访问控制的中间件。如果要拒绝访问,则必须在之前运行处理请求。请求处理通常是在相关控制器操作中完成的操作。
另一个例子是cookie加密和解密。解密是在之前的中间件中完成的,这样当您处理请求时,您可以正常读取和写入cookie。然后之后的中间件会在将Cookie发送到客户端之前对其进行加密。
全局中间件在每个请求上运行,而不是分配给某些东西的中间件(例如路由或控制器)。