Видео Laravel не в общей папке

У меня есть приложение на laravel (5.4)

У каждого пользователя есть папка в / public, куда администратор может загружать (через FTP) некоторые видео для просмотра пользователями. У каждого пользователя разные видео.

Проблема, с которой я столкнулся сейчас, заключается в том, что все в общей папке доступно. Также, если пользователь не авторизован. Как этого избежать?

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

Hussein 06.05.2018 09:59
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
1
564
1

Ответы 1

предположим, что у нас есть 2 пользователя с этими именами:

  • Джон
  • Сара

тогда у вас будет 2 папки:

  • storage/app/john
  • storage/app/sarah

Теперь, чтобы получить доступ к файлам Джона, вы должны иметь в своем routes / web.php следующее:

Route::get('/file/{username}/{name}','FilesController@getFile');

затем в FilesController добавьте эту функцию:

public function getFile($username,$name){
   if (!Auth::user()){
       //user is not logged in
       return response(null,403)
    }
   $auth_user = Auth::user()->username;
   if ($username === $auth_user){
    //continue with the request

      $exists = Storage::disk('local')->exists($username .'/'. $name);
     if (!$exists){
         // file not found
         return response(null,404);
     }
      $file = Storage::get($username .'/'. $name);
      return response($file);
   }else{
     // the user doesn't have access
   }
}

Я не тестировал это, поэтому, если у вас возникнут проблемы, дайте мне знать

Подробнее о хранилище Laravel

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

hatemjapo 06.05.2018 13:16

вы можете получить доступ к файлам только через эту функцию, прямая ссылка на файл не будет работать, потому что его нет в папке storage/app/public

Hussein 06.05.2018 15:40

так как можно передать файлы в тег видео или img в html?

hatemjapo 06.05.2018 18:02

через этот return response()->file(storage_path('app',$username .'/'. $name));

Hussein 06.05.2018 18:05

Другие вопросы по теме