У меня уже есть веб-приложение 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-адрес.
Любая помощь будет оценена.