При использовании Passport в качестве основного метода аутентификации используйте обе защиты api / web Laravel. - PullRequest
0 голосов
/ 02 июня 2019

У меня уже есть веб-приложение Laravel / Vue, использующее Passport.Моя защита по умолчанию - auth: api.Кроме того, хранилище vuex сохраняет мою информацию пользователя / токен в localStorage

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

Route::middleware('auth:api')->group(function() {

        Route::get('/view-pdf/{id}',[
            'uses' => 'MyController@streamPdf'
        ])->middleware(['permission:view_pdf']);
)};

Все мои представления загружаются с использованием маршрутизатора vue и всехЗапросы GET / POST / PATCH выполняются с axios с использованием API-маршрутов.Все идет нормально.

Теперь мне нужно использовать веб-маршруты для отображения некоторых PDF-файлов.Конечно, пользовательский сеанс отсутствует, поэтому я получаю ответ Unauthorized 403. При отсутствии разрешения.

Мне интересно, как это можно сделать.Я думал о том, чтобы начать сеанс для охраны: веб однажды вошел в систему через API, но я даже близко не понимаю, как решить эту проблему.

Возможно ли это?Должен ли я подумать о том, чтобы сделать это по-другому?

Просто для пояснения, веб-маршруты необходимы для потоковой передачи PDF-файлов непосредственно из контроллера с использованием snnapyPDF.Для этого я открываю новое окно, используя window.open('/view-pdf/486') в моем компоненте vue.Использование axios.get() с ответом BLOB-объекта не вариант, так как я не смогу изменить ни имя файла, ни URL-адрес.

Любая помощь будет оценена.

...