2

对于某些操作,我只想接受 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

如何改进此代码?

4

2 回答 2

8

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

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

于 2013-01-07T06:01:45.153 回答
6

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

于 2013-01-07T06:43:10.020 回答