Ruby on rails 在RubyonRails中只接受HTTPS请求
对于某些操作,我只接受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
这是我的第一个代码,但我认为有更好的方法
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年半内更改该文件。)