【问题标题】:Avoid/remove web middleware in routes for Laravel >= 5.2.31避免/删除 Laravel >= 5.2.31 的路由中的 Web 中间件
【发布时间】:2016-09-21 21:42:12
【问题描述】:

changes 之后,即 Laravel 5.2.31 及更高版本,app/Http/routes.php 中的所有路由都将属于 web 中间件组。

RouteServiceProvider.php

protected function mapWebRoutes(Router $router)
{
    $router->group([
        'namespace' => $this->namespace, 'middleware' => 'web',
    ], function ($router) {
        require app_path('Http/routes.php');
    });
}

问题:

  1. 在没有web 中间件的情况下定义一组路由的最简单/最佳方法是什么?

其中一个用例是,为无状态 api 声明路由,而没有会话中间件,属于 web 组中间件

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    我解决这个问题的一种方法是编辑 app/Providers/RouteServiceProvider.php 并为其他组中间件(即 api)设置另一个路由文件

    public function map(Router $router)
    {
        $this->mapWebRoutes($router);
        $this->mapApiRoutes($router);
    
        //
    }
    
    protected function mapWebRoutes(Router $router)
    {
        $router->group([
            'namespace' => $this->namespace, 'middleware' => 'web',
        ], function ($router) {
            require app_path('Http/routes.php');
        });
    }
    
    // Add this method and call it in map method. 
    protected function mapApiRoutes(Router $router)
    {
        $router->group([
            'namespace' => $this->namespace, 'middleware' => 'api',
        ], function ($router) {
            require app_path('Http/routes-api.php');
        });
    }
    

    要验证结果,请在终端上运行php artisan route:list 并检查路由中间件。

    例如

    现在我有一些没有 web 中间件的路由,它在不同的文件中定义,后来在 RouteServiceProvider 中调用

    如果你更喜欢旧功能,你可以有这样的东西:

    public function map(Router $router)
    {
        $this->mapWebRoutes($router);
        $this->mapGeneralRoutes($router);
    }
    
    protected function mapGeneralRoutes(Router $router)
    {
        $router->group(['namespace' => $this->namespace], function ($router) {
            require app_path('Http/routes-general.php');
        });
    }
    

    然后,在routes-general.php 中,您可以像以前一样为不同的路由集拥有多个中间件组

    【讨论】:

    • 这实际上是 Laravel 5.3 开箱即用的。现在有web和api两个文件
    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 2017-07-23
    • 2016-09-11
    • 2016-09-19
    • 2018-04-27
    • 2015-11-17
    • 1970-01-01
    • 2015-11-24
    相关资源
    最近更新 更多