Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在RubyonRails中只接受HTTPS请求_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 在RubyonRails中只接受HTTPS请求

Ruby on rails 在RubyonRails中只接受HTTPS请求,ruby-on-rails,ruby,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 a

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

如何改进此代码?

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


如果它满足您的需要,我建议您在使用自己的解决方案时再使用它。我们目前在生产中使用它,效果非常好。

对于强制SSL执行特定操作,您可以使用。
对于整个应用程序,您只需在
环境.rb
文件中执行:
config.force\u ssl=true


阅读。

codereview.stackexchange.com是请求代码审阅的合适位置。我没有请求审阅我的代码。我问了一个更好的想法或方法来解决这个问题。我同意,Rails不应该处理这个问题。如果请求可以在Web服务器上被拒绝,你不应该让它一直传到Rails,这应该是可以接受的答案。但是,
config.force\u ssl
应该在application.rb中设置,而不是在environment.rb中设置。(完全没有可能在7年半内更改该文件。)