Файлы, хранящиеся в корзине AWS, загружаются только в том случае, если пользователи вошли в приложение Laravel.Не напрямую переходя по URL - PullRequest
1 голос
/ 20 сентября 2019

Я хочу, чтобы пользователи могли загружать файлы, сохраненные в моем хранилище AWS, только если они вошли в мое приложение Laravel.Я не хочу, чтобы пользователи могли загружать файлы, если они не вошли в систему и не переходят напрямую по URL-адресу.Может кто-нибудь, пожалуйста, помогите мне достичь этого?Я думаю, что мне, возможно, нужно как-то установить документ как частный, но я не уверен в этом.

1 Ответ

0 голосов
/ 20 сентября 2019

Мне известны две опции:

  • Возвращение временного подписанного URL-адреса, который пользователь может использовать для загрузки файла непосредственно из S3.
  • Потоковая передача или загрузка файла из S3 через ваше приложение.

Для первого варианта вы можете использовать Storage фасад temporaryUrl метод , подобный этому, чтобы разрешить доступ для 5минут:

$url = Storage::disk('s3')->temporaryUrl(
    'file.jpg', now()->addMinutes(5)
);

Чтобы загрузить файл через свой сервер, вы можете вернуть:

return Storage::download('file.jpg');

Не указывайте мне следующее, но я думаю, что преимущество использования S3 временное.url в том, что загрузка не должна происходить через ваш сервер, который освобождает ваш сервер для других запросов.Преимущество загрузки через ваш сервер состоит в том, что вы сможете проходить проверку подлинности на каждом запросе, и у вас не будет временного URL, которым пользователь сможет поделиться.

...