запретить зрителю js url доступ к файлу без входа в систему - PullRequest
0 голосов
/ 26 апреля 2018

Мне нужно ограничить доступ к файлам с сервера, если пользователь не вошел в систему.

Я использую ViewerJS для предварительного просмотра файлов и могу получить доступ к загруженным файлам с сервера, просто введя URL.

http://localhost/gbdportal-new/ViewerJS/#../uploads/2138970950.pdf

Я пытался выполнить проверку, когда пользователь нажимает этот маршрут:

$f3->route('GET ViewerJS/*', function()
{
    /* if user not logged in.. no access
    */
});

Но viewerJS напрямую отображает файл, не проходя проверку маршрута [я думаю].

Как я могу запретить пользователям доступ к файлу без входа в систему?

Любая помощь очень ценится. Спасибо.

1 Ответ

0 голосов
/ 26 апреля 2018

В зависимости от конфигурации вашего сервера, если ваш сервер обнаружит, что запрошенный URL-адрес является файлом, он напрямую извлечет файл и не выполнит ваш код.

Лучший способ сделать то, что вы пытаетесь достичь, - это создать новый маршрут в вашем PHP-коде, который проверит, что пользователь подключен, а затем откроет файл для отправки его клиенту.

код будет выглядеть как

$f3->route('GET getFile/@file', function()
{
    if( /*the user is logged in*/){
        $fileName = $f3->get('PARAMS.file')

        header("Content-type:application/pdf");

        readfile("uploads/$file.pdf");
    }else{
        //return a 403 error
    }
});

Теперь вы можете поместить http://localhost/gbdportal-new/ViewerJS/#../getFile/2138970950 в JsViewer, и он не сможет получить файл, если пользователь не вошел в систему

Надеюсь, я ответил на ваш вопрос, хорошего дня

...