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');
    }
}

Любая помощь будет заметна. Заранее спасибо.

0 ответов

Другие вопросы по тегам