Ruby on rails 当不需要SSL时,如何重定向非SSL通信?
我的应用程序中有一部分使用SSL和force_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
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
您所说的“应用程序控制器中的简单条件”是什么意思。难道没有力量的反面吗?