Защита Carrierwave загруженных файлов - PullRequest
5 голосов
/ 22 мая 2011

хотят убедиться, что ТОЛЬКО пользователи, вошедшие в систему, могут просматривать / загружать файлы, загруженные с carrierwave.

Как это сделать?

Перемещен каталог магазина из общедоступного в RAILS_ROOT, создан маршрут для отображения и загрузки.

Проблема в том, что если это изображение, <%= image_tag(photo.image_url) %> Я получаю полный путь /Users/myname/projects/appname/files/image/id/image.png, поэтому он не отображается.

Также было бы неплохо, если бы view не отображал мой абсолютный путь, а только относительный путь от сайта.

1 Ответ

3 голосов
/ 22 мая 2011

Это действительно очень легко сделать.Вот блог, в котором рассказывается о sendfile и x-sendfile.Это должно отправить вас в правильном направлении.

http://www.therailsway.com/2009/2/22/file-downloads-done-right

Вот рельсы документы для него.

http://api.rubyonrails.org/classes/ActionController/Streaming.html#method-i-send_file

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

...