在Ruby on Rails中仅接受HTTPS请求

时间:2013-01-07 05:51:35

标签: ruby-on-rails ruby

对于某些操作,我只想接受HTTPS请求 这是我的第一个代码,但我认为有更好的方法。

before_filter :reject_http_request, :only => [:fucntion_a, :function_b]

def reject_http_request
  scheme = request.protocol.to_s.downcase
  if scheme == 'http://'
    raise AccessDeniedException.new("Not allowed protocol scheme")
  end
  true
end

如何改进此代码?

2 个答案:

答案 0 :(得分:8)

您可以使用rack-ssl-enforcer gem在Rack级别执行此操作。它可以配置为允许排除特定路径,主机和方法。

如果它满足您的需求,我建议您通过滚动自己的解决方案。我们目前在生产中使用它并且效果很好。

答案 1 :(得分:5)

为强制执行特定操作的SSL,您可以使用force_ssl 对于整个应用,您可以在config.force_ssl = true文件中执行:environment.rb
阅读more here