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

Laravel 8整合Passport与MongoDB出现依赖冲突如何解决?

解决方案

这里提供两种可行的适配方案,优先推荐手动适配方案,不需要额外依赖第三方适配包,稳定性更高,更适合生产环境使用。

方案一:手动适配(推荐)

  • 第一步:确保你已经正常安装好laravel/passport:^10.1和jenssegers/mongodb:^3.8,先不要安装designmynight的适配包
  • 第二步:创建Passport相关的自定义Mongo模型,在app/Models目录下新建Passport文件夹,然后在文件夹内新增4个模型文件:
    1. app/Models/Passport/Client.php
    <?php
    namespace App\Models\Passport;
    use Jenssegers\Mongodb\Eloquent\Model;
    use Laravel\Passport\ClientInterface;
    
    class Client extends Model implements ClientInterface
    {
        protected $connection = 'mongodb';
        protected $collection = 'oauth_clients';
    }
    
    1. app/Models/Passport/AuthCode.php
    <?php
    namespace App\Models\Passport;
    use Jenssegers\Mongodb\Eloquent\Model;
    
    class AuthCode extends Model
    {
        protected $connection = 'mongodb';
        protected $collection = 'oauth_auth_codes';
    }
    
    1. app/Models/Passport/PersonalAccessClient.php
    <?php
    namespace App\Models\Passport;
    use Jenssegers\Mongodb\Eloquent\Model;
    
    class PersonalAccessClient extends Model
    {
        protected $connection = 'mongodb';
        protected $collection = 'oauth_personal_access_clients';
    }
    
    1. app/Models/Passport/Token.php
    <?php
    namespace App\Models\Passport;
    use Jenssegers\Mongodb\Eloquent\Model;
    
    class Token extends Model
    {
        protected $connection = 'mongodb';
        protected $collection = 'oauth_access_tokens';
    }
    
  • 第三步:在app/Providers/AppServiceProvider.php的boot方法中注册自定义的Passport模型:
    public function boot()
    {
        // 保留原有boot方法的其他代码
        \Laravel\Passport\Passport::useClientModel(\App\Models\Passport\Client::class);
        \Laravel\Passport\Passport::useAuthCodeModel(\App\Models\Passport\AuthCode::class);
        \Laravel\Passport\Passport::usePersonalAccessClientModel(\App\Models\Passport\PersonalAccessClient::class);
        \Laravel\Passport\Passport::useTokenModel(\App\Models\Passport\Token::class);
    }
    
  • 第四步:修改你的User模型,确保继承Mongo的用户基类且引入Passport的API令牌trait:
    use Jenssegers\Mongodb\Auth\User as Authenticatable;
    use Laravel\Passport\HasApiTokens;
    
    class User extends Authenticatable
    {
        use HasApiTokens;
        // 保留User模型的其他原有代码
    }
    
  • 最后执行php artisan passport:install生成加密密钥和客户端,即可正常使用Passport的所有功能。

方案二:忽略版本冲突强制安装

如果你临时测试需要快速使用designmynight/laravel-mongodb-passport包,可以通过composer参数忽略版本约束,执行以下安装命令即可:

composer require designmynight/laravel-mongodb-passport:2.0.1 -W --ignore-platform-reqs

注意:该方案跳过了版本依赖校验,可能存在兼容性风险,仅建议临时测试时使用,不推荐用于生产环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:54:02