Как проверить, проходит ли проверка подлинности пользователя перед доступом к файлу с общего диска файловой системы? - PullRequest
0 голосов
/ 25 июня 2018

Я использую файловую систему laravel для хранения и извлечения файлов.public/storage является символической ссылкой на storage/app/public.В каталоге storage/app/public у меня есть две папки с соответствующими файлами (чтобы они были доступны в браузере):

  1. логотипы
    • ABC.png
    • DEF.png
  2. защищенные файлы
    • file1.pdf
    • file2.pdf

Когда пользователь пытается получить доступ к файлам из каталога protected-files, я хотел бы проверить, аутентифицирован ли этот пользователь.Сможем ли мы это сделать?

Я следовал за ответом по ссылке , но без эффекта.

web.php

Route::get('storage/protected-files/{file}', function() {
   //logic to check whether the user is authenticated
})->where(['file' => '.*']);

Ответы [ 3 ]

0 голосов
/ 25 июня 2018

storage/protected-files путь относится к расположению файлов на сервере, но на самом деле это доступно для публичного мира как http://example.com/file-name.pdf. Маршруты в laravel предназначены для обработки URL. Так что стоит попробовать как:

Route::get('/{file}', function() {
    //check whether the user is authenticated
    if (!auth()->user()) { //    or may use Auth::check();
        return 'unauthorized';
    }
})->where(['file' => '.*']);
0 голосов
/ 25 июня 2018

Веб-сервер вернет файл, если он существует в каталоге / public, запрос даже не поступит в laravel.

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

Вы можете использовать «локальный» диск, который записывает в каталог хранилища / приложения, поэтому вам нужно указать каталог при записи файла.

0 голосов
/ 25 июня 2018

Перед доступом к файлам вы можете просто проверить, аутентифицирован ли пользователь с помощью этого кода.

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