Laravel 8 - invalidArgumentException Пользовательский провайдер аутентификации [] не определен
Я пытаюсь выполнить отдельную ручную аутентификацию для пользователей и администратора. У меня также есть отдельные таблицы для них (Admin и User). Мне удалось успешно аутентифицировать пользователей, но когда я пытаюсь аутентифицировать администратора, устанавливая нового охранника и провайдера, это дает мне invalidArgumentException Пользовательский провайдер аутентификации [] не определен. ошибка. Я встречал много похожих вопросов, изучил каждый из них и попробовал некоторые методы, но не смог найти решение этой проблемы.
web.php
// |--user routes--|
Route::get('/login', [App\Http\Controllers\UserController::class, 'index'])
->name('login');
Route::post('/login', [App\Http\Controllers\UserController::class, 'login']);
Route::group(['middleware' => 'auth'], function(){
Route::get('/dashboard', [App\Http\Controllers\UserController::class, 'dash']);
Route::get('/inner', [App\Http\Controllers\UserController::class, 'inside']);
Route::post('/logout', [App\Http\Controllers\UserController::class, 'logout']);
});
// |--admin routes--|
Route::group(['prefix' => 'admin'], function(){
Route::get('/login', [App\Http\Controllers\AdminController::class, 'index'])->name('login');
Route::post('/login', [App\Http\Controllers\AdminController::class, 'login']);
Route::group(['middleware' => 'auth:admin'], function(){
Route::get('/dashboard', [App\Http\Controllers\AdminController::class, 'dash']);
Route::get('/inner', [App\Http\Controllers\AdminController::class, 'inside']);
Route::post('/logout', [App\Http\Controllers\AdminController::class, 'logout']);
});
});
config \ auth.php
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
'admin' => [
'driver' => 'session',
'provider' => 'admins'
]
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
'admins' => [
'driver ' => 'eloquent',
'model' => App\Models\Admin::class
]
],
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
'throttle' => 60,
],
'admins' => [
'provider' => 'admins',
'table' => 'password_resets',
'expire' => 60,
'throttle' => 60,
]
],
'password_timeout' => 10800,
UserController
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Auth;
class UserController extends Controller
{
public function index()
{
if(Auth::check()){
return redirect('/dashboard');
}
return view('login');
}
public function login()
{
request()->validate([
'email' => 'required|email',
'password' => 'required'
]);
$validated = [
'email' => request('email'),
'password' => request('password')
];
if(Auth::attempt($validated)){
request()->session()->regenerate();
return redirect('/dashboard');
}else{
return back()->withErrors([
'mismatch' => 'The provided credentials do not match our records.',
]);
}
}
public function dash()
{
return view('dashboard');
}
public function inside()
{
return view('innerpage');
}
public function logout()
{
Auth::logout();
request()->session()->invalidate();
request()->session()->regenerateToken();
return redirect('/login');
}
}
AdminController
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Auth;
class AdminController extends Controller
{
public function index()
{
return view('admin.login');
}
public function login()
{
request()->validate([
'email' => 'required|email',
'password' => 'required'
]);
$validated = [
'email' => request('email'),
'password' => request('password')
];
if(Auth::guard('admin')->attempt($validated)){
request()->session()->regenerate();
return redirect('/admin/dashboard');
}else{
return back()->withErrors([
'mismatch' => 'The provided credentials do not match our records.',
]);
}
}
public function dash()
{
return view('/admin/dashboard');
}
public function logout()
{
Auth::guard('admin')->logout();
request()->session()->invalidate();
request()->session()->regenerateToken();
return redirect('/admin/login');
}
}
Любая помощь будет заметна. Заранее спасибо.