Laravel 302 для маршрута с промежуточным ПО Auth - PullRequest
0 голосов
/ 08 ноября 2019

В моем приложении Laravel 6 файлы хранятся в папке storage/uploads, и поэтому вы не можете создать прямую ссылку на них. Для доступа к файлам существует маршрут, который вызывает метод из контроллера.

Route::middleware(['auth'])->group(function () {
    Route::get('uploads/{filename}', 'UploadController@getFile')->name('uploads.get');
}

UploadController@getFile метод обращается к storage/uploads и загружает файл.

public function getFile(string $filename)
{
    return response()->download(storage_path('uploads/' . $filename));
}

Еслииспользуется промежуточное программное обеспечение auth, загружается только один файл с кодом 200, а для других файлов возвращается код 302

view.blade.php

...

@foreach($user->files as $file)
    <img src="{{ route('uploads.get', $file) }}" class="img-thumbnail">
@endforeach

...

При обновлении страницы загружается еще один файл. После того, как они сохранены в кеше, все файлы успешно загружаются с кодом 200.

Эта проблема решается, если удалить промежуточное ПО auth.

Route::get('uploads/{filename}', 'UploadController@getFile')->name('uploads.get');

Что я делаю не так?

Обновление

Тот же результат, если я использую функцию response()->file() вместо response()->download().

Интересно, что все ответы с кодом 302 инициируют запросы к /login. Некоторые из этих запросов возвращаются с кодом 200, другие с кодом 302 также. Приложение использует стандартную систему аутентификации Laravel.

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