IlluminateAuthSessionGuard::__construct() 必须实现接口



我已经阅读了有关我的错误的其他问题,所以我重新检查了我的代码,没有发现任何错别字错误,错误

Symfony \ 组件 \ 调试 \ 异常 \ 致命可抛出错误 (E_RECOVERABLE_ERROR( 参数 2 传递给 Illuminate\Auth\SessionGuard::__construct(( 必须实现接口 Illuminate\Contracts\Auth\UserProvider, null 给定, 调用 \vendor\laravel\framework\src\Illuminate\Auth\AuthManager.php on line 125

身份验证.php

return [
    'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],
    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],
        'admin' => [
            'driver' => 'session',
            'provider' => 'admin',
        ],
        'user' => [
            'driver' => 'session',
            'provider' => 'user',
        ],
        'company' => [
            'driver' => 'session',
            'provider' => 'company',
        ],
        'employee' => [
            'driver' => 'session',
            'provider' => 'employee',
        ],
    ],

    'providers' => [
        'admin' => [
            'driver' => 'eloquent',
            'model' => AppAdmin::class,
        ],
        'company' => [
            'driver' => 'eloquent',
            'model' => AppModelEmployee::class,
        ],
        'employee' => [
            'driver' => 'eloquent',
            'model' => AppModelEmployee::class,
        ],
    ],
];

您需要为新防护定义提供程序,否则它将引发错误。您的提供商也应该拼写为"admins">,因为您正在为管理员引用特定的迁移表

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => AppUser::class,
    ],

    'admins' => [
        'driver' => 'eloquent',
        'model' => AppAdmin::class,
    ],
],

一切都很好,我只是在控制器中被称为旧的默认用户身份验证,我在旧项目中进行了修改,现在我安装了新项目,然后移动除用户.php默认模型以外的所有文件

 $companyAuth = auth()->guard('user'); //called wrong default 
 $companyAuth = auth()->guard('employee'); //now working fine

最新更新