Использовать SSL с помощью ssl_requirement в приложении Rails 2
У меня есть приложение Rails, которое нужно запускать под SSL. Я попробовал ssl_requirement, но мне кажется, что я должен вводить все действия в каждом controllerе.
Есть ли какой-нибудь метод, который я могу добавить перед_фильтром в controller приложения с помощью ssl_requirement, чтобы приложения автоматически перенаправлялись на https, когда пользовательский запрос находится в http?
Спасибо всем. 🙂
- Как сообщить `ссылкам` игнорировать истекший SSL-сертификат и продолжить?
- Сколько накладных расходов накладывает SSL?
- Вызывается SSL-вызов Invoke-WebRequest?
- Недопустимый самоподписанный SSL-сертификат - «Тема альтернативного имени отсутствует»
- javax.net.ssl.SSLException: Ошибка чтения: ssl = 0x9524b800: ошибка ввода-вывода во время системного вызова, сброс соединения с помощью одноранговой сети
- Простой Java HTTPS-сервер
- Использование SSL и SslStream для одноранговой аутентификации?
- Повторное использование сеансов SSL в Android с HttpClient
- Как отправить электронную почту через SSL SMTP с помощью .NET Framework?
- Как использовать TLS 1.2 в Java 6
- javax.net.ssl.SSLHandshakeException: удаленное подключение к удаленному хосту во время рукопожатия во время веб-службы Communicaiton
- ASP.NET MVC RequireHttps только в производстве
- Присвоение имени домена локальному хосту для среды разработки
Используйте промежуточное ПО Rack .
# lib/force_ssl.rb class ForceSSL def initialize(app) @app = app end def call(env) if env['HTTPS'] == 'on' || env['HTTP_X_FORWARDED_PROTO'] == 'https' @app.call(env) else req = Rack::Request.new(env) [301, { "Location" => req.url.gsub(/^http:/, "https:") }, []] end end end # config/environment.rb config.middleware.use "ForceSSL"
Вы можете попробовать выполнить тест, если запрос находится в ssl или нет в файле before_filter в вашем приложении
class Application < AC::Base before_filter :need_ssl def need_ssl redirect_to "https://#{request.host}/#{request.query_string}" unless request.ssl? end end
Основная проблема заключается в том, что force_ssl.rb не загружается и что lib не загружается по умолчанию в rails 3.1. Вы должны добавить
config.autoload_paths += %W(#{config.root}/lib) config.autoload_paths += Dir["#{config.root}/lib/**/"]
к application.rb