【问题标题】:Difference between before and after middleware in Laravel 5.1Laravel 5.1 中间件前后的区别
【发布时间】:2016-02-24 19:53:45
【问题描述】:

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

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

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

  • 在应用程序处理请求之前/之后 - 这究竟是什么意思(除了一个之前和之后运行)?
  • 内核中受保护变量中定义的全局中间件与之后的中间件有何不同或它们的共同点(因为创建句柄方法时的规则相似)?

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

【问题讨论】:

标签: laravel middleware


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2015-10-26
    • 2018-10-09
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 2015-12-03
    • 2016-04-13
    • 2015-10-14
    • 2017-03-31
    相关资源
    最近更新 更多