You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行dusterio/lumen-passport安装命令后出现Router::middleware()未定义错误

解决Lumen安装dusterio/lumen-passport时出现Call to undefined method Router::middleware()错误

这个错误的核心原因是Lumen的路由系统和Laravel存在差异:Laravel的Router类提供了静态的middleware()方法,但Lumen的Laravel\Lumen\Routing\Router并没有这个方法,而dusterio/lumen-passport的自动安装脚本或默认配置代码中调用了该方法,导致安装失败。

解决步骤

  • 跳过自动脚本安装包
    执行以下命令安装包,避免触发出错的自动配置脚本:

    composer require dusterio/lumen-passport --no-scripts
    

    注意:如果你的Lumen版本较旧,需要指定对应兼容的包版本,比如Lumen 8.x对应dusterio/lumen-passport:^8.0,Lumen 9.x对应^9.0,命令改为:

    composer require dusterio/lumen-passport:^x.x --no-scripts
    
  • 手动配置Lumen Passport

    1. 打开bootstrap/app.php,取消以下两行的注释(启用门面和Eloquent):
      $app->withFacades();
      $app->withEloquent();
      
    2. 注册Passport服务提供者,在文件中添加:
      $app->register(Dusterio\LumenPassport\PassportServiceProvider::class);
      
    3. 配置路由中间件(替代报错的Router::middleware()调用):
      在bootstrap/app.php中添加路由中间件定义,比如:
      $app->routeMiddleware([
          'auth:api' => Dusterio\LumenPassport\Http\Middleware\CheckClientCredentials::class,
          // 若需要其他中间件可在此添加
      ]);
      
    4. 执行数据库迁移和Passport初始化命令:
      php artisan migrate
      php artisan passport:install
      
  • 验证配置
    可以在路由文件中添加测试路由,使用auth:api中间件验证是否生效:

    $router->group(['middleware' => 'auth:api'], function () use ($router) {
        $router->get('/user', function () {
            return auth()->user();
        });
    });
    

内容的提问来源于stack exchange,提问作者Maryam Aftab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:10:19