Htaccess и загрузки - PullRequest
       16

Htaccess и загрузки

3 голосов
/ 12 июня 2009

.htaccess файлы не моя сильная сторона.

У меня есть загрузка документов в / загрузки. Пользователь должен иметь возможность просматривать только что загруженные документы, нажав на ссылку документа, которая появляется через ajax после завершения загрузки.

Однако я хотел бы иметь возможность защитить паролем папку / uploads, НО по-прежнему разрешать текущему пользователю просматривать выбранный документ без появления запроса пароля.

Возможно ли это сделать в .htaccess?

Спасибо за любые предложения.

Ответы [ 3 ]

2 голосов
/ 12 июня 2009

Если вы не используете аутентификацию HTTP для аутентификации вашего пользователя перед загрузкой, это, вероятно, не может быть сделано просто с помощью .htaccess. Вам необходимо знать владельца файла и сравнить его с текущим пользователем, что выходит за рамки возможностей обычного веб-сервера.

Если вы можете использовать Nginx или Lighttpd, вы можете использовать заголовок X-Accel-Redirect / X-Sendfile. Также есть модуль для Apache2 под названием mod_xsendfile . Сделайте все запросы, чтобы /uploads прозрачно прошел через ваше приложение, проверьте доступ, а затем сообщите веб-серверу отправить файл. Хотя для этого требуется возможность настройки веб-сервера (что иногда невозможно), это, вероятно, наиболее правильное и универсальное решение.

Вот несколько полезных ссылок:

1 голос
/ 12 июня 2009

Вы можете использовать аутентификацию на основе файлов cookie ( mod_auth_cookie ), чтобы предоставить доступ через htaccess для определенного местоположения.

Я не уверен, что установит путь к файлу cookie для конкретного файла, но стоит попробовать.

Хотя вам лучше делать это на уровне приложения.

РЕДАКТИРОВАТЬ: Это может быть лучшим решением

0 голосов
/ 12 июня 2009

Я не думаю, что это возможно в .htaccess - поскольку .htaccess не может узнать, какой пользователь загрузил какие файлы. Даже если это произойдет (например, путем помещения файлов в uploads/username/), я не думаю, что файлы .htaccess - это путь. Я думаю, вы, вероятно, захотите применить это на уровне приложения.

...