如何在单个控制器上抑制ssl

时间:2017-06-05 18:27:59

标签: ruby-on-rails

我的production.rb中有config.force_ssl = true用于Ruby on Rails 5应用程序,但需要一个控制器NOT force_ssl。如果不配置每个控制器,这可能吗?在单个控制器中有unforce_ssl的方法吗?

2 个答案:

答案 0 :(得分:2)

您可以创建一个安全的控制器:

class SecureController < ApplicationController
  force_ssl
end

然后你可以使所有控制器继承SecureController

class ThingsController < SecureController
  ...
end

除了有问题的那个。您必须对要应用的所有控制器进行一次性更改,但好消息是您只需要执行一次,然后您就可以扩展SecureController的功能。听起来你的问题是要求:skip:except上的before_action,但我认识的大多数Rails开发人员都认为应该这样做。

答案 1 :(得分:0)

根据this page

  

您可以传递以下任何选项以影响before_action   回调

     仅

- 应仅针对此操作运行回调

     

除外 - 应该对除此操作之外的所有操作运行回调

     

if - 命名实例方法或proc的符号;只有在返回真值时才会调用回调。

     

除非 - 命名实例方法或proc的符号;只有在返回false值时才会调用回调。

这是使用控制器级别force_ssl。

配置级别force_ssl是应用程序范围