在Ruby on Rails中仅接受HTTPS请求

Ben*_*min 2 ruby ruby-on-rails

对于某些操作,我只想接受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
Run Code Online (Sandbox Code Playgroud)

我该如何改进这段代码?

Chr*_*ich 8

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

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


wle*_*ss1 5

要强制执行特定操作的 SSL ,您可以使用force_ssl.
对于整个应用程序,您只需执行:config.force_ssl = true在您的environment.rb文件中.在这里
阅读更多.