我的应用程序的一部分正在使用带有 force_ssl 方法的 SSL,在相关控制器中执行以下操作:
class MyController < ApplicationController
force_ssl
end
这很好用,但是,在不属于本节的页面上,我不想使用 SSL。不需要时是否可以重定向回非 SSL 协议?
我的应用程序的一部分正在使用带有 force_ssl 方法的 SSL,在相关控制器中执行以下操作:
class MyController < ApplicationController
force_ssl
end
这很好用,但是,在不属于本节的页面上,我不想使用 SSL。不需要时是否可以重定向回非 SSL 协议?
为什么不在 HTTP 级别进行 ssl 重定向?在 HTTP 级别执行此操作更清洁、更快(因为请求在 Rails 之前重定向)。
如果您看到 force_ssl
源代码 ( http://apidock.com/rails/ActionController/ForceSSL/ClassMethods/force_ssl ),它只会进行简单的重定向。
您可能也不想使用 :protocol 选项link_to
。
我认为这没有一些自动功能。因此,您必须对需要 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