Я создал приложение, развернутое на heroku, которое использует carrierwave для хранения всех загруженных файлов, и я установил хранилище google для разработчиков, чтобы хранить эти файлы там.
Пока здесь все работает нормально, но я бы хотел, чтобы файлы показывались приватно, т.е. пользователь должен быть авторизован для просмотра.
В среде разработки все работает очень хорошо.
Чтобы скрыть URL-адрес исходного файла от пользователей, я принял следующие решения:
инициализаторы / carrierwave.rb
CarrierWave.configure do |config|
if Rails.env.production?
config.storage = :fog
config.fog_credentials = {
:provider => 'Google',
:google_storage_access_key_id => 'xxx',
:google_storage_secret_access_key => 'yyy'
}
config.fog_directory = 'wwww'
else
config.storage = :file
end
end
контроллер
Получает содержимое файла, чтобы скрыть его путь и имя от посторонних глаз
def get_file
if Rails.env.production?
redirect_to URI.encode @media_asset.attachment_url
else
send_file ("public/"+@media_asset.attachment_url.to_s),
:type => @media_asset.attachment_content_type,
:length => @media_asset.attachment_file_size,
:status => "200 OK",
:x_sendfile => true,
:filename => "media_asset",
:disposition => 'inline'
end
end
, видимо, это бы сработало, но с помощью обычного инструмента для разработки браузеров все увидят путь к хранилищу Google и смогут получить доступ ко всем файлам.
У вас есть подсказка, как решить эту проблему, возможно ли вообще использовать хранилище Google для разработчиков?
заранее спасибо,