我目前正在尝试找到一种方法来强制某些路由使用 http(更快,不需要安全性)并强制使用 https 访问更敏感的页面。我看到了这个问题的答案:Rails 3 SSL Deprecation,但它似乎不起作用。
我在根 url 周围添加了一个范围:
scope :constraints => { :protocol => 'http' } do
root :to => 'site#index'
end
但是No route matches [GET] "/"
当我尝试访问 localhost:3000 时,它只是抛出了错误。
有没有一种干净的方法可以在某些地方强制 http 并在其他地方强制 https(我可以force_ssl
在我的控制器中使用,但是有没有force_http
?)路由周围的范围看起来很干净,但它对我不起作用。我做错了吗?
这样的方法怎么样?
CONTROLLERS_THAT_REQUIRE_SSL = ['check_out']
def ensure_proper_protocol
unless Rails.env.development? || Rails.env.test?
if request.protocol["https"] && !CONTROLLERS_THAT_REQUIRE_SSL.include?(params[:controller])
redirect_to "http://" + request.host + request.path
end
end
end