Laravel (5.8) @guest не может идентифицировать один из пользовательских охранников. У меня есть 2 кастомных охранника:
'guards' => [
'suppliers' => [
'driver' => 'session',
'provider' => 'suppliers',
],
'admins' => [
'driver' => 'session',
'provider' => 'admins',
],
],
'providers' => [
'admins' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'suppliers' => [
'driver' => 'eloquent',
'model' => App\Supplier::class,
],
],
Маршруты входа:
// Admin Auth routes
Route::get('/admin/login', 'Auth\LoginController@showLoginForm')->name('admin.login');
Route::post('/admin/login', 'Auth\LoginController@login')->name('admin.login.post');
Route::post('/admin/logout', 'Auth\LoginController@logout')->name('admin.logout');
// Suppliers Auth routes
Route::get('/login', 'AuthSuppliers\LoginController@showLoginForm')->name('login');
Route::post('/login', 'AuthSuppliers\LoginController@login')->name('login.post');
Route::post('/logout', 'AuthSuppliers\LoginController@logout')->name('logout');
Все работает нормально с suppliers, но admins не может быть идентифицирован как зарегистрированный с помощью директивы blade @guest, однако Auth::guard('admins')->check() возвращает true.
Квест больше похож на: как использовать клинок с несколькими охранниками. Например, как я могу напечатать имя пользователя, если я не знаю, какой именно охранник вошел в систему?






Из документов laravel:
If needed, you may specify the authentication guard that should be checked when using the @auth and @guest directives:
@auth('admin') // The user is authenticated... @endauth @guest('admin') // The user is not authenticated... @endguest
Таким образом, вы можете указать @auth и @guest параметр, который является средством проверки подлинности, используемым для проверки.
Хорошо, а как насчет @guest('suppliers') ? Он будет выводить контент, если вы вошли в систему как администратор, это не сработает, я сделал помощник для этой задачи, другого пути не вижу.
Вы можете использовать несколько вложенных гостей: @guest('suppliers) @guest('admins) ... @endguest @endguest
Auth::user() всегда предоставляет информацию о вошедшем в систему пользователе. можешь попробовать