SSL с Ruby on Rails - PullRequest
       22

SSL с Ruby on Rails

12 голосов
/ 23 января 2010

Что мне нужно сделать, чтобы трафик к моему приложению ruby ​​on rails использовал https? У меня установлен сертификат, и если я вручную набираю "https://" в адресной строке при доступе к сайту, появляется маленький значок блокировки, но просто переход на сайт www.example-app.com вручную в моем браузере отправляет трафик через http: / /.

Есть ли однострочный конфиг или он сложнее? Раньше мне никогда не приходилось иметь дело с SSL, поэтому извините, если я говорю, что не знаю, что происходит.

Я размещаюсь в MediaTemple в (gs), если это имеет значение, или у кого-то есть опыт с такой настройкой.

Ответы [ 4 ]

14 голосов
/ 23 января 2010

Проверьте ssl_requirement драгоценный камень.

Это позволяет вам указать в ваших контроллерах, какие действия должны выполняться через https, а какие действия могут выполняться через https. Затем он позаботится о перенаправлении с http на https и наоборот.

Из документации:

class ApplicationController < ActiveRecord::Base
  include SslRequirement
end

class AccountController < ApplicationController
  ssl_required :signup, :payment
  ssl_allowed :index

  def signup
    # Non-SSL access will be redirected to SSL
  end

  def payment
    # Non-SSL access will be redirected to SSL
  end

  def index
    # This action will work either with or without SSL
  end

  def other
    # SSL access will be redirected to non-SSL
  end
end
7 голосов
/ 23 января 2010

Ruby on Rails - это платформа приложений, а не веб-сервер.Конфигурация HTTPS, которую нужно изменить, находится в конфигурации вашего веб-сервера (Apache, nginx и т. Д.).

3 голосов
/ 23 января 2010

Это довольно легко, и вам не нужен драгоценный камень для этого. Я написал, как перенаправить без www в рельсах здесь . Перенаправление на https (почти) точно так же.

class ApplicationController < ActionController::Base
  before_filter :redirect_to_https

  def redirect_to_https
    redirect_to "https://example.com#{request.fullpath}" if !request.ssl? && request.host != "localhost"
  end
end

Примените фильтр before_filter ко всему, что вы хотите убедиться, что оно защищено защитой SSL. Я обычно один для повторного использования кода и гемов, но этот смехотворно прост. Подробнее о request.protocol . (Обратите внимание, что в среде Ruby 1.9.3 / Rails 3.2 имя request.fullpath; в некоторых более ранних версиях оно было request.request_uri; см. Примечания к выпуску и т.

0 голосов
/ 20 августа 2014

https://github.com/bartt/ssl_requirement вот более новая версия ssl_requirement.

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