Разработка пакета - проверка авторизации не работает

Я сделал простое новое приложение Laravel 5.3 для разработки пакета. Я следовал инструкциям здесь и некоторые изменения, сделанные в комментариях пользователем Janis. Все работает отлично.

Затем я решил обновить опубликованное представление с помощью

@if(Auth::check())
    ID: {{Auth::id()}}.
@else
    not logged in
@endif

Текущее состояние приложения загружается на Github здесь.

Проблема

Просмотр проверки не работает. У меня всегда есть not logged in. Как заставить Auth::check() работать? На другой вкладке моего браузера я правильно зарегистрирован.

Намек

Я не уверен, как следовать этой подсказке< /а>

To do

Пожалуйста, проинструктируйте меня, как заставить работать Auth::check() в представлении.


person Peter    schedule 29.08.2016    source источник
comment
Что произойдет, если вы сделаете dd(Auth::check()) в контроллере пакета, который загружает это представление?   -  person Julian Rodriguez    schedule 29.08.2016
comment
Я просто получаю false на пустой странице   -  person Peter    schedule 29.08.2016
comment
Вы говорите, что он отлично работает в другой вкладке вашего браузера - как это возможно? Что ты имеешь в виду под "с этой стороны"?   -  person Denis Mysenko    schedule 29.08.2016
comment
Вы пытались проверить, действительно ли вы вошли в систему? Попробуйте сбросить Auth::user() после успешного входа в систему.   -  person Doom5    schedule 29.08.2016
comment
Для меня это тоже выглядит невозможным. Попробуйте запустить приложение на локальном компьютере, чтобы убедиться в этом. Я отредактировал файл On this side. Это означало, что с точки зрения исходного приложения все работает нормально.   -  person Peter    schedule 29.08.2016
comment
Хорошо, я просто пытаюсь следовать намеку. Добавьте в верхней части вашего контроллера представления использование Illuminate\Support\Facades\Auth, затем войдите в свое приложение еще раз, затем dd(Auth::check()). Все еще получаешь ложь?   -  person Julian Rodriguez    schedule 29.08.2016
comment
@Doom5 Да, на странице приветствия все в порядке. Я могу войти и выйти из системы, и состояние Auth::check() меняется соответственно.   -  person Peter    schedule 29.08.2016
comment
@JulianRodriguez я добавил. Раньше я добавлял только use Auth; как в HomeController. Не работает. Наверное, Laravel меня ненавидит.   -  person Peter    schedule 29.08.2016
comment
Хорошо, это моя последняя идея. Я надеюсь, что эта работа. Проверка учебника (я следил за ним однажды некоторое время назад, но вообще не использовал аутентификацию) обнаружил, что маршрут не использует промежуточное программное обеспечение. Я предлагаю вам заставить ваш маршрутизатор пакетов использовать промежуточное программное обеспечение, а затем снова проверить dd(Auth::check())   -  person Julian Rodriguez    schedule 29.08.2016
comment
@JulianRodriguez Последняя идея, как правило, самая правильная. Вот оно. Пожалуйста, опубликуйте свое предложение в качестве ответа! Спасибо.   -  person Peter    schedule 29.08.2016


Ответы (3)


Начиная с Laravel 5, любой маршрут в route.php автоматически использует веб-промежуточное программное обеспечение, но этого не происходит с вашими маршрутами пакетов.

Чтобы использовать аутентификацию Laravel в ваших контроллерах пакетов и представлениях, вам необходимо принудительно использовать промежуточное программное обеспечение в вашем пакете route.php, используя что-то вроде:

Route::group(['middleware' => 'web'], function () {
  // your package routes here
});
person Julian Rodriguez    schedule 29.08.2016

Что ж, попробуй эту ремесленную команду

php artisan cache:clear
person Eliott    schedule 29.08.2016
comment
Я пытался, прежде чем опубликовать этот вопрос. Хотел бы я быть таким легким. :) - person Peter; 29.08.2016

Это моя структура для маршрутов моего пакета в моем поставщике услуг.

единственное, что вам нужно сделать, это добавить промежуточное программное обеспечение «веб» для ваших маршрутов

$routeConfig = [
        'namespace' => config('banasher.controllers.namespace')."\Panel",
        'prefix'    => 'panel',
        'as'        => 'panel.',
        //TODO: add middleware
        'middleware' => ['web','auth']
    ];
    $this->getRouter()->group($routeConfig, function() {
        require __DIR__.'\routes\banasher.php';
    });
person AmirRezaM75    schedule 03.05.2019