Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.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 当不需要SSL时,如何重定向非SSL通信?_Ruby On Rails_Ssl_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 当不需要SSL时,如何重定向非SSL通信?

Ruby on rails 当不需要SSL时,如何重定向非SSL通信?,ruby-on-rails,ssl,ruby-on-rails-4,Ruby On Rails,Ssl,Ruby On Rails 4,我的应用程序中有一部分使用SSL和force_SSL方法,在相关控制器中执行类似操作: class MyController < ApplicationController force_ssl end class MyController

我的应用程序中有一部分使用SSL和force_SSL方法,在相关控制器中执行类似操作:

class MyController < ApplicationController
  force_ssl
end
class MyController

这很好,但是,在不属于本节的页面上,我不想使用SSL。当不需要时,是否可以重定向回非SSL协议?

我不认为有一些自动控制功能。因此,在需要SSL和不需要SSL的地方,必须有某种定义。在进行映射时,在ApplicationController中创建简单条件是很简单的

像这样,如果你不介意语法的话

https_only = { auth:{'login','logout',...}, registration:{'new','edit',...},...}

https_only.each do |controller, actions|
    if controller_name == controller
        actions.each do |a|
            if action_name == a
                do_redirect_to_https_with_current_path
            else
                do_nothing
        end
    end
end

为什么不在HTTP级别执行ssl重定向?在HTTP级别这样做更干净、更快(因为请求在Rails之前被重定向)

如果您看到
force_ssl
源代码(),它只会进行简单的重定向

您也可能不想使用:protocol选项
link\u to

您所说的“应用程序控制器中的简单条件”是什么意思。难道没有力量的反面吗?