ssl - 选择 SSL 路由通过高压 gem 提供 rails 4 个静态页面

标签 ssl ruby-on-rails-4 high-voltage

我通过高压 gem 在 ruby​​ rails 4 站点中提供了几个静态 erb 页面:

get '/about'    => 'high_voltage/pages#show', id: 'about'
get '/contact'  => 'high_voltage/pages#show', id: 'contact', :protocol => "https"
get '/privacy'  => 'high_voltage/pages#show', id: 'privacy'

除了/contact 路由不重定向或强制启用 SSL 之外,这一切都很好,它对使用的任何协议(protocol)都很满意。

我在 engine yard 上托管该站点,试图在 route 仅放置 :force_ssl 或变体导致部署失败 - 高压使用与正常路线略有不同的参数集,因此我怀疑某处存在冲突。

有人使用带 rails 4 的高压和 SSL 来选择静态页面(不是整个站点)吗?请示例路线。

最佳答案

您可以通过覆盖 HighVoltage#PagesController 来实现此目的,请参阅 override section的文档。

它可能看起来像这样:

class PagesController < ApplicationController
  include HighVoltage::StaticPage

  before_filter :ensure_secure_page

  private

  def ensure_secure_page
    if params[:id] == 'contact'
      # check to make sure SSL is being use. Redirect to secure page if not.
    end
  end
end

接下来禁用 HighVoltage 提供的路由:

# config/initializers/high_voltage.rb
HighVoltage.routes = false

然后在您的应用程序的路由文件中,您需要设置一个新路由:

# config/routes.rb
get "/pages/*id" => 'pages#show', as: :page, format: false

关于ssl - 选择 SSL 路由通过高压 gem 提供 rails 4 个静态页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20366604/

相关文章:

ruby-on-rails - Ruby Sort ActiveRecord - float 像 float 一样存储为字符串

ruby-on-rails - 在 Markdown 中使用 ERB 和 Redcarpet

ruby-on-rails - 弃用警告:ActionController::TestCase HTTP 请求方法在未来的 Rails 版本中将只接受关键字参数

java - 通过 SSL 从 Spring Cloud Config 获取配置

asp.net - IDX10214 : Audience validation failed. ADFS.Net

ruby-on-rails - 上传到 Heroku (AWS) 时出错

ruby-on-rails - 响应做格式问题

java - 带有 Java 异常发送消息的 Mongo SSL

java - 无法使用 Htmlunit 连接到使用 HTTPS 的网站