![](/img/trans.png)
[英]Argument 2 passed to Arubacao\BasicAuth\BasicGuard::__construct() must be an instance of Illuminate\Contracts\Auth\UserProvider, null given
[英]Laravel 8 : Argument 2 passed to Illuminate\Auth\SessionGuard::__construct() must be an instance of Illuminate\Contracts\Auth\UserProvider, null given
我正在尝试为我的应用程序的用户和管理员创建多重保护身份验证。 在将其标记为重复或其他内容之前,请阅读它并让别人帮助我。 我已经尝试了来自相同问题解决方案的所有可能解决方案,但直到现在都没有奏效。
这是我的代码:
授权.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
'admin' => [
'driver' => 'session',
'providers' => 'admins'
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
'admins' => [
'driver' => 'eloquent',
'model' => App\Models\AdminUser::class,
],
],
AdminUser.php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Database\Eloquent\Model;
class AdminUser extends Authenticatable
{
use HasFactory, Notifiable;
protected $table = 'admin_users';
protected $guard = 'admin';
protected $fillable = [
'first_name',
'middle_name',
'last_name',
'email',
'password',
];
protected $hidden = [
'password',
'remember_token',
];
protected $casts = [
'email_verified_at' => 'datetime',
];
}
AdminAuthController.php
class AdminAuthController extends Controller {
public function __construct()
{
$this->middleware('auth:admin');
}
public function getLogin()
{
return view('login');
}
}
web.php
Route::get('/login', 'LoginController@index')->name('login');
Route::get('/admin/login','AdminAuthController@getLogin');
当我 go 到我的应用程序/登录时,它要求输入用户名和密码,并在通过身份验证后让我进入。 但是当我 go 到my-application/admin/login时,它给了我这个错误:
传递给 Illuminate\Auth\SessionGuard::__construct() 的参数 2 必须是 Illuminate\Contracts\Auth\UserProvider 的实例,给定 null,在 /var/www/vhosts/my-application/httpdocs/vendor/laravel/framework 中调用/src/Illuminate/Auth/AuthManager.php 第 124 行
我尝试了相同问题的解决方案,但没有任何帮助。Laravel 文档有点混乱,所以我在这里寻求您的帮助。 请帮助我,我提前感谢你的帮助。 我正在使用 Laravel 8.*
我昨天才遇到这个问题。 我对 web 开发比较陌生。 原来问题出在我的 cofig/auth.php 上。 在设置“守卫”部分时,我将提供程序设置为引用表名 ('provider' => 'admins_user') 而不是它下面的“提供程序”部分 ('provider' => 'admins')。 解决方案:当我将守卫指向“提供者”部分时,它已解决。 我知道这对我来说是一个愚蠢的错误,但我希望这能帮助有类似情况的人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.