设备上的SSL无法正常工作Rails 3

时间:2011-11-16 07:24:55

标签: ruby-on-rails-3 ssl devise

我在application_controller.rb

中有两个方法
def force_ssl
      if !request.ssl?
        redirect_to :protocol => 'https'
      end
    end

    def no_ssl
      if request.ssl?
        redirect_to :protocol => "http"
      end
    end

我也在application.rb

中完成了before_filter :no_ssl

现在我试图在设备的会话控制器中调用force_ssl方法来保护通过SSL登录

在sessions_controller.rb文件中,我完成了skip_before_filter :no_ssl and before_filter :force_ssl

我在使用它时无法登录,但是如果我在application_controller.rb中没有before_filter :no_ssl它可以正常工作。

由于我有很多控制器,我试图将before_filter :no_ssl放在application.rb中,这样我就不必在所有控制器中调用before_filter :no_ssl,因为它不会是DRY。

我已经尝试了几乎所有可用的资源,并且不知道为什么这不起作用。

P.S: - 除了设计控制器之外,这适用于我的其他控制器 有什么建议??

谢谢,

1 个答案:

答案 0 :(得分:1)

  1. 您可以使用Bartt-SSL_Requirement,它在Rails 3.1中运行良好,这样您就不需要before_filter和skip_before_filter。在BarttSSLRequirement中,您可以使用“ssl_exceptions”来满足您的before_filter需求。

  2. SSL有时会在开发中出现问题,将其推送到分段,它应该可以正常工作。