Ключ доступа Amazon отображается в URL для Carrierwave и Fog - PullRequest
3 голосов
/ 18 марта 2012

Я только что переключился с хранения своих изображений, загруженных через Carrierwave локально, на использование Amazon s3 через драгоценный камень тумана в моем приложении Rails 3.1.Когда изображения добавляются, когда я нажимаю на изображение в моем приложении, URL-адрес предоставляет мой ключ доступа и подпись.Вот пример URL (XXX заменил строку информацией):

https://s3.amazonaws.com/bucketname/uploads/photo/image/2/IMG_4842.jpg?AWSAccessKeyId=XXX&Signature=XXX%3D&Expires=1332093418

Это происходит в процессе разработки (localhost: 3000) и когда я использую heroku для производства.Вот мой загрузчик:

class ImageUploader < CarrierWave::Uploader::Base
 include CarrierWave::RMagick
 storage :fog
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
  process :convert => :jpg
  process :resize_to_limit => [640, 640] 
  version :thumb do
    process :convert => :jpg
    process :resize_to_fill => [280, 205]
  end
  version :avatar do
    process :convert => :jpg
    process :resize_to_fill => [120, 120]
  end
end

И мой config / initializers / fog.rb:

 CarrierWave.configure do |config| 
  config.fog_credentials = { 
     :provider               => 'AWS', 
     :aws_access_key_id      => 'XXX', 
     :aws_secret_access_key  => 'XXX',
   } 
  config.fog_directory  = 'bucketname' 
  config.fog_public     = false
end  

Кто-нибудь знает, как убедиться, что эта информация недоступна?

ОБНОВЛЕНИЕ: Добавление вида и кода контроллера: из частичного в users / show.html.erb:

<% if @user.photos.any? %>
  <% for photo in @user.photos %>
    <li class="span4 hidey">
    <div class="thumb_box">
      <%=link_to(image_tag(photo.image_url(:thumb).to_s), photo.image_url.to_s,   
                                                       :class=>"lb_test") %>
      ...
    </div>    
    </li>
  <% end %>
<% end %>

users_controller.rb:

 def show
   @user = User.find(params[:id])
 end

ОБНОВЛЕНИЕ: добавление страницы ошибкиЯ получаю при удалении информацию о ключе доступа из URL:

This XML file does not appear to have any style information associated with it. The document tree is shown below.

<Error>
 <Code>AccessDenied</Code>
  <Message>Access Denied</Message>
   <RequestId>47077D6EC13AD1D8</RequestId>
     <HostId>+HTeODcWTqv3gbRIAwf+lI6sPzfNTegDXjT9SnMdqrYr7gLD1TD0qN+OgMLwA1JO
     </HostId>
 </Error>

Ответы [ 3 ]

6 голосов
/ 10 февраля 2013

Удалить

config.fog_public     = false

Это значение не по умолчанию:)

4 голосов
/ 30 марта 2012

То, что вы видите, это подписанный URL. Без полного URL (включая ключ, подпись, срок действия) вы получите отказ в доступе. Работает именно так, как и должно. И я предполагаю, что ключ - это просто открытый ключ, который бесполезен без вашего личного ключа (который есть у AWS).

0 голосов
/ 29 марта 2012

Попробуйте photo.image.url вместо photo.image_url. Это то, что я использую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...