Обслуживание файлов с помощью PocketBase

Я хочу ограничить доступ к файлам для неавторизованного пользователя.

В документации PocketBase сказано, что я могу получить URL-адрес файла и получить доступ к файлам через него. Пример URL-адреса файла будет таким:

http://127.0.0.1:8090/api/files/example/kfzjt5oy8r34hvn/test_52iWbGinWd.png

Я могу запретить неавторизованным пользователям получать этот URL-адрес, но авторизованные пользователи могут делиться URL-адресом с другим.

Есть идеи?

1 ответ

Я нашел хороший способ защитить файлы с помощью nginx, добавив дополнительное место для моего блока сервера PocketBase и используя дополнительный бэкэнд с одной конечной точкой.

Итак, мой nginx выглядит так:

      server {
    listen 80;
    server_name example.com;
    location /api/files {
        proxy_intercept_errors on;
        error_page 404 = @fallback;
        proxy_pass http://127.0.0.1:5000;
    }
    location / {
        proxy_pass http://127.0.0.1:8090;
    }
    location @fallback {
        proxy_pass http://127.0.0.1:8090;
    }
}

Где мой бэкэнд expressjs, работающий на порту:5000, проверяет JWT и отвечает 404, если он действителен. Nginx перенаправит на:8090 (PocketBase), если 404 вернется на:5000.

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