Маршруты в пакете для Laravel - PullRequest
1 голос
/ 06 апреля 2019

У меня проблема с доступом к Auth::user() в файле маршрутов пакета Laravel.

Я создаю пакет для Laravel (используя 5.8.9). Пакет имеет свои собственные маршруты в файле маршрутов, который добавляется правильно.

Я создал идентичный маршрут на основном тестовом сайте и в пакете. Я использую composer 'path' для символической ссылки пакета на тестовый сайт, который находится на Homestead, который я использую на компьютере с Windows 10.

Маршрут прост, и я просто проверяю, вошел ли пользователь в систему, что это такое.

Route::get('/home', function () {
    dd(Auth::check());
});

В основном файле маршрутов сайта проверка возвращает true, как и ожидалось. Когда закомментировано и разрешено обрабатывать файл маршрута в пакете, мы получаем возврат false.

Я заметил, что при попытке запустить промежуточное программное обеспечение для пакета я обнаружил ошибку и после некоторого расследования обнаружил, что пакет не регистрирует пользователя как зарегистрированного.

Есть идеи? Это проблема, потому что я использую путь от композитора к символической ссылке?

РЕДАКТИРОВАТЬ: ОК. Я исключил проблему с символьной ссылкой, создав частное хранилище и импортировав его. Так что теперь он в продаже как обычный импортированный пакет, но все еще сталкивается с той же проблемой.

EDIT2: я просто попытался вытащить пользователя из файла маршрутов пакета, просто выполнив простую

Route::get('/home', function () {
    $user = \App\User::find(1);
    dd($user);
});

И получить null Кто-нибудь знает, возможно ли получить доступ к моделям пользователя / ядра в пакете, или он отключен или проблема с порядком загрузки?

1 Ответ

0 голосов
/ 08 апреля 2019

Мне удалось решить эту проблему, если вы используете в ваших маршрутах маршруты, для которых требуется auth, вам необходимо включить промежуточное ПО web.Если вы не включили промежуточное программное обеспечение web, то вы не загружаете некоторые функции, которые загружает основная инфраструктура, например сеансы.

А если у вас нет сеансов, то, очевидно, вы не сможетевосстановить зарегистрированных пользователей.

Чтобы заставить его работать, измените код на

Route::get('/home', function () {
    $user = \App\User::find(1);
    dd($user);
})->middleware(['web]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...