Промежуточное ПО Laravel перенаправляет все маршруты аутентификации в пакетах на панель управления

Я настраиваю приложение laravel 5.3, которое использует пользовательские пакеты и промежуточное ПО для проверки подлинности laravel. Когда я определяю маршруты в laravel / packages / vendor / packageName / src / routes.php, как в случае с

Route::get('member/list', function() {
    return 'member lists here';
})->middleware('auth');

он перенаправляет на localhost: 8000 / url-адрес панели управления, определенный в промежуточном программном обеспечении RedirectIfAuthenticated, но когда я определяю маршрут в resources / routes / web.php, он выполняет маршрутизацию и авторизацию по мере необходимости.

Есть ли что-то, что я делаю неправильно, или что-то мне нужно проверить?

--- Обновление --- Ниже приведен фрагмент моего класса ServiceProvider

namespace Beansoft\PractitionerIMS;
use Illuminate\Support\ServiceProvider;
class PractitionerIMSServiceProvider extends ServiceProvider {
    public function register() {
        $this->app->bind('practitionerims', function($app) {
            return new PractitionerIMS;
        });
    }

    public function boot() {
        //load the routes file
        if (!$this->app->routesAreCached()) {
            require __DIR__ . '/Http/routes.php';
        }
}

Приложение / Config / app.php

'providers' => [

        /*
         * Laravel Framework Service Providers...
         */
        Illuminate\Auth\AuthServiceProvider::class,
        Illuminate\Broadcasting\BroadcastServiceProvider::class,
        Illuminate\Bus\BusServiceProvider::class,
        Illuminate\Cache\CacheServiceProvider::class,
        Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
        Illuminate\Cookie\CookieServiceProvider::class,
        Illuminate\Database\DatabaseServiceProvider::class,
        Illuminate\Encryption\EncryptionServiceProvider::class,
        Illuminate\Filesystem\FilesystemServiceProvider::class,
        Illuminate\Foundation\Providers\FoundationServiceProvider::class,
        Illuminate\Hashing\HashServiceProvider::class,
        Illuminate\Mail\MailServiceProvider::class,
        Illuminate\Notifications\NotificationServiceProvider::class,
        Illuminate\Pagination\PaginationServiceProvider::class,
        Illuminate\Pipeline\PipelineServiceProvider::class,
        Illuminate\Queue\QueueServiceProvider::class,
        Illuminate\Redis\RedisServiceProvider::class,
        Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
        Illuminate\Session\SessionServiceProvider::class,
        Illuminate\Translation\TranslationServiceProvider::class,
        Illuminate\Validation\ValidationServiceProvider::class,
        Illuminate\View\ViewServiceProvider::class,

        Beansoft\PractitionerIMS\PractitionerIMSServiceProvider::class,


        /*
         * Package Service Providers...
         */

        //
        Yab\Laracogs\LaracogsProvider::class,

        /*
         * Application Service Providers...
         */
        App\Providers\AppServiceProvider::class,
        App\Providers\AuthServiceProvider::class,
        // App\Providers\BroadcastServiceProvider::class,
        App\Providers\EventServiceProvider::class,
        App\Providers\RouteServiceProvider::class,

    ],

Вывод php artisan route

введите описание изображения здесь


person Ambrose Chieke    schedule 16.10.2016    source источник


Ответы (2)


В Laravel 5.3 с помощью группы промежуточного программного обеспечения 'web' промежуточное ПО сеанса добавляется в маршрут, и у меня работает auth.

Route::group(['middleware' => ['web','admin']], function () {
     Route::get('/admin/somepage', '\MyPackage\SomeController@somepage');
});
person aCiD    schedule 19.07.2018

Из документов Laravel 5.3:

Чтобы определить маршруты для вашего пакета, просто потребуйте файл маршрутов из метода загрузки вашего поставщика услуг пакетов. В файле маршрутов вы можете использовать фасад Illuminate \ Support \ Facades \ Route для регистрации маршрутов так же, как в типичном приложении Laravel:

Ваша проблема в том, что ваш файл routes.php из вашего пакета не включен в ваш проект. Для этого вы должны поместить следующий код в ServiceProvider вашего пакета:

public function boot()
{
  if (! $this->app->routesAreCached()) {
      // customize this reference according to your package structure
      require __DIR__.'/../../routes.php';
  }
}

Подробнее об этом читайте в документации.

Обновить. Попробуйте проложить маршрут следующим образом (с помощью группы):

Route::group(['middleware' => 'auth'], function() {
  Route::get('member/list', function() {
    return 'member lists here';
  });
});
person Jan Willem    schedule 17.10.2016
comment
Спасибо, Ян, за твой ответ. Я искренне это ценю. - person Ambrose Chieke; 17.10.2016
comment
Привет, Ян, я только что обновил вопрос, чтобы показать, что файл routes.php был опубликован по мере необходимости. Маршрутизация хорошо работает из пакета, проблема возникает, когда я ввожу промежуточное программное обеспечение auth для обеспечения аутентификации для маршрутов пакета. - person Ambrose Chieke; 17.10.2016
comment
Можете ли вы опубликовать конфигурацию вашего провайдера из вашего app / config / app.php? - person Jan Willem; 17.10.2016
comment
Привет, Ян, я добавил конфигурацию провайдеров. спасибо за ваш постоянный интерес. Я очень ценю это. - person Ambrose Chieke; 17.10.2016
comment
Привет, Ян, я попробовал групповой подход, как вы указали, он по-прежнему перенаправляет на панель инструментов. - person Ambrose Chieke; 17.10.2016
comment
Попробуйте запустить php artisan route: clear, а затем php artisan routes, вы можете показать результат? - person Jan Willem; 17.10.2016
comment
Я прикрепил дамп экрана маршрутов приложений - person Ambrose Chieke; 17.10.2016