0

我的应用程序的一部分正在使用带有 force_ssl 方法的 SSL,在相关控制器中执行以下操作:

class MyController < ApplicationController
  force_ssl
end

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

4

2 回答 2

1

为什么不在 HTTP 级别进行 ssl 重定向?在 HTTP 级别执行此操作更清洁、更快(因为请求在 Rails 之前重定向)。

如果您看到 force_ssl源代码 ( http://apidock.com/rails/ActionController/ForceSSL/ClassMethods/force_ssl ),它只会进行简单的重定向。

您可能也不想使用 :protocol 选项link_to

于 2013-11-04T17:19:08.473 回答
0

我认为这没有一些自动功能。因此,您必须对需要 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
于 2013-11-04T16:14:00.117 回答