我需要在应用程序中的所有路由上强制使用 SSL,除了
message#new
控制器之外。
在
config/environments/production.rb
,我有:
config.force_ssl = true
现在所有路由都重定向到 https,现在我想为
message#new
控制器禁用该功能。
有谁知道如何在 Rails 4+ 应用程序中禁用特定控制器的强制 SSL?
根据文档,以下应该可以工作(但仅适用于rails > 5版本):
config.ssl_options = {
redirect: {
exclude: -> request { request.path =~ /healthcheck/ }
}
}
skip_before_action :verify_authenticity_token
force_ssl except: [:index,:create]
它对我有用。
如果您需要禁用运行状况检查路径的 TLS,请使用确切的路径:
config.ssl_options = {
redirect: { exclude: -> request { request.path == '/healthcheck' } }
}
当前接受的答案建议使用非常宽松的正则表达式,这将绕过包含
healthcheck
路径中任何位置的任何路径的 TLS。这是一个重大的安全风险。安全许可名单应始终尽可能具体。
在
MessagesController.rb
- 中执行此操作
force_ssl except: [:new]