【问题标题】:What does 'return $next($request)' do in Laravel middleware?'return $next($request)' 在 Laravel 中间件中有什么作用?
【发布时间】:2019-04-25 14:08:12
【问题描述】:

请尊重我是编程和 Laravel 的新手,所以这个问题对你们大多数人来说可能有点奇怪。
但我认为这就是 stackoverflow 的用途,所以:

当我使用命令 php artisan make:middleware setLocale 创建新的中间件时,已经有 handle 函数,其中包含以下代码:

return $next($request);

我想知道这条线到底是做什么的。

【问题讨论】:

  • 坚持/你很好你去/你有权利
  • @AhmedAboud 以及如何?闭包在这种情况下做了什么?

标签: laravel closures middleware


【解决方案1】:

$next($request) 只是将请求传递给下一个处理程序。 假设您添加了一个用于检查年龄限制的中间件。

public function handle($request, Closure $next)
{
    if ($request->age <= 18) {
        return redirect('home');
    }

    return $next($request);
}

当年龄小于 18 岁时,它会重定向到家,但是当请求通过条件时,应该如何处理请求?它将传递给下一个处理程序。可能传递给注册用户方法或任何视图。

【讨论】:

  • 将此作为答案,因为它提供了示例和解释
【解决方案2】:

这在文档中有解释:

要将请求更深入地传递到应用程序(允许中间件“通过”),请使用 $request 调用 $next 回调。

最好将中间件设想为一系列“层”HTTP 请求在到达您的应用程序之前必须通过。每一层都可以检查请求,甚至完全拒绝它。

https://laravel.com/docs/5.8/middleware#defining-middleware

【讨论】:

    猜你喜欢
    • 2019-01-07
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 2019-11-06
    相关资源
    最近更新 更多