Rails仅在指定的控制器上强制ssl

col*_*ain 4 ruby ssl ruby-on-rails

我有一个ssl证书,服务于https://secure.mydomain.com.我想只在某些控制器上使用ssl,而不是在整个应用程序中使用ssl.我已经在线查看,似乎无法找到有关如何为指定控制器启用ssl的完整而准确的教程.

我知道我可以使用下面的配置ssl,但它不能为我提供服务,因为它支持ssl网站范围

config.force_ssl = true
Run Code Online (Sandbox Code Playgroud)

如何告诉rails只在特定控制器上使用ssl而不是我的整个应用程序?

Sam*_*cey 9

您可以使用routes.rb中的约束来执行此操作:

resource :account, :constraints => { :protocol => "https", :subdomain => "secure" }
Run Code Online (Sandbox Code Playgroud)

此外,如果您有许多安全路线,并且想要干涸,可以scope为您的安全路线创建:

scope :constraints => { :protocol => "https", :subdomain => "secure" } do

  ...[secure routes]...

end
Run Code Online (Sandbox Code Playgroud)