Показывать pdf только авторизованным пользователям - PullRequest
1 голос
/ 20 октября 2010

Я создаю веб-сайт из старого, и мне нужно показать много файлов .pdf.

Мне нужно, чтобы пользователи прошли аутентификацию, прежде чем они не смогут увидеть ни один из моих файлов .pdf,я не знаю как (и я не могу поместить свой pdf в мою базу данных).

Я использую Pylons с Python.

Спасибо за помощь.* Если у вас есть какие-либо вопросы, спросите меня!:)

Ответы [ 4 ]

4 голосов
/ 25 октября 2010

Вот мой пример того, как это сделать в Pylons.Я не проверял это, но должно быть достаточно ссылок, чтобы начать работу.

  1. Включите X-SendFile на своем HTTP-сервере (как сказал Пол, реализация зависит от сервера): Apache mod_xsendfile , Nginx эквивалент
  2. Поместите файлы PDF вне каталога / public в вашей установке Pylons (я бы предложил каталог на том же уровне, что иваш каталог Pylons)
  3. Добавьте какую-либо аутентификацию и авторизацию на свой сайт. Здесь - хорошая статья о том, как вы используете repoze.who (Аутентификация) и repoze.what (Авторизация)
  4. Создание маршрута иконтроллер для обработки запроса вашего PDF, это как любой другой маршрут и контроллер.(т. е. маршрут /pdfs/ enjfilenamecasts.pdf)
  5. Если все авторизовано и аутентифицировано правильно, вы можете создать правильные заголовки для используемого вами x-sendfile (или эквивалентного).
2 голосов
/ 20 октября 2010

Предложение Пола о X-Sendfile превосходно - это действительно отличный способ вернуть документ пользователю.(+1 для Пола:)

Что касается внешнего интерфейса, сделайте что-то вроде этого:

  1. Храните ваши PDF-файлы в недоступном для Интернета месте (скажем / безопасном)
  2. Предложите URL-адрес, который выглядит как /unsecure/filename.pdf
  3. Сделайте так, чтобы ваш HTTP-сервер (если это Apache, смотрите Mod Rewrite) преобразовал эту ссылку в /normal/php/path/authenticator.php?file= filename.pdf
  4. authenticator.php подтверждает, что файл существует, что пользователь является законным (то есть с помощью файла cookie), а затем использует X-Sendfile для возврата PDF.
2 голосов
/ 20 октября 2010

Вы хотите использовать заголовок X-Sendfile для отправки этих файлов. Точные данные будут зависеть от того, какой Http-сервер вы используете.

0 голосов
/ 26 октября 2010

Может быть, достаточно имени файла с ключом md5?

48cd84ab06b0a18f3b6e024703cfd246-myfilename.pdf

Вы можете использовать имя файла и datetime.now для создания ключа md5.

...