Laravel @guest не может идентифицировать один из пользовательских охранников

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.

Квест больше похож на: как использовать клинок с несколькими охранниками. Например, как я могу напечатать имя пользователя, если я не знаю, какой именно охранник вошел в систему?

Auth::user() всегда предоставляет информацию о вошедшем в систему пользователе. можешь попробовать

Prince Kumar Dwivedi 27.02.2019 12:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
1
916
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Из документов 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') ? Он будет выводить контент, если вы вошли в систему как администратор, это не сработает, я сделал помощник для этой задачи, другого пути не вижу.

RomkaLTU 27.02.2019 12:14

Вы можете использовать несколько вложенных гостей: @guest('suppliers) @guest('admins) ... @endguest @endguest

dparoli 27.02.2019 12:30

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