首页 > 解决方案 > 会话闪存和验证错误在新路由文件中不起作用

问题描述

laravel 5.8 嗨,我在路由目录中添加了一个名为“admin.php”的新路由文件,会话闪存和错误验证在此路由文件中不起作用,但在 web.php 会话闪存和验证错误效果很好

这是 RouteServiceProvider 中的 map 方法

 public function map()
    {
        $this->mapApiRoutes();

        $this->mapWebRoutes();

        $this->mapAdminRoutes();
    }

mapAdminRoutes 方法

   protected function mapAdminRoutes()
    {
        Route::prefix('admin')->middleware(['auth','admin'])
            ->namespace($this->namespace."\Admin")
            ->group(base_path('routes/admin.php'));
    }

我不在 admin.php 路由中使用任何中间件

我尝试->middleware(['auth','admin'])在 mapApiRoutes 方法中删除

注意:admin.php 路由的会话闪现和错误验证在 web.php 中运行良好

标签: laravellaravel-5

解决方案


您需要为新的路由文件应用会话中间件app/Http/Kernel.php

App\Http\Kernel

protected $middlewareGroups = [
    'admin' => [
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    ],
];

我剥离了其他中间件,web 为了api 简洁起见,保留它们

您可以看到该web 组应用了StartSessionShareErrorsFromSession 中间件,因此您也必须为新路由文件手动执行此操作

希望这可以帮助


推荐阅读