我正在开发一个Laravel应用程序。现在,我正在尝试创建一个在注册任何路由之前检查的中间件。从逻辑上讲,这就是我要做的。我有一个保存在数据库中的路由列表。成像,有一个称为重定向的模型。在中间件中,我想检查,如果请求的路径落入数据库中的重定向之一,我将重定向到其他路径。现在,我创建了一个名为 RedirectMiddleware 的中间件。然后我像这样在内核类中注册了它,
protected $middlewareGroups = [
'web' => [
RedirectMiddleware::class,
],
'api' => [
//other stuff
],
];
问题是,当我访问不存在的路由时,它会在没有先通过中间件的情况下呈现 404 错误页面。如何创建/注册在注册任何路由之前调用的中间件?或者有什么更好的方法来实现我想要实现的目标,而不是使用中间件?
在Laravel中,HTTP内核处理中间件注册。但是要注册它,您必须输入配置。在注册中,从应用程序\Http\内核.php中获取所需的配置。在那里,我们需要注意我们的命名空间。Laravel只读取App\Http命名空间中的内容。当你调用你的中间件时,你试图在相对论中引用它,就好像它在当前命名空间中一样。
protected $middlewareGroups = [
'web' => [
RedirectMiddleware::class,
],
'api' => [
//other stuff
],
];
您需要做的是直接引用它。为此,您需要转义命名空间并提供路径。这样。。。
protected $middlewareGroups = [
'web' => [
// Your other middlewares
AppHttpMiddlewareRedirectMiddleware::class,
],
'api' => [
//other stuff
],
];
这应该可以解决您的问题。如果没有,请告诉我并发布您的中间件,以便我们了解您到底在做什么。
-- 当前 Laravel 文档 07/19/2019 :: https://laravel.com/docs/5.8/middleware#registering-middleware