簡體   English   中英

在Rails 5中為特定的控制器禁用force_ssl

[英]Disable force_ssl for specific controllers in Rails 5

我在我的production.rb文件中添加了force_ssl

  config.force_ssl = true

但是現在我想為某些控制器禁用SSL。 我試圖添加到我的控制器:

before_action :force_no_ssl

但是它給了我一個:

PagesController:0x4a29560的未定義方法`force_no_ssl'

有辦法嗎?

您正在使用全局配置方法。 這樣可以確保每個控制器和每個動作都使用ssl。 切換到基於控制器的強制。

您可以將其添加到所需的每個控制器中,也可以將其添加到應用程序控制器中,然后根據控制器/操作組合將其關閉,我喜歡一個case語句,因為它允許多個選項,但是您可以做得最好為您的應用。

class ApplicationController < ActionController::Base
  force_ssl unless: :no_ssl?

  def no_ssl?
    case "#{params[:controller]} #{params[:action]}"
    when "parents index"
      return false
    else
      return false
    end
  end
end

我的解決方案與上述trh發布的解決方案類似:

def force_no_ssl
  if request.ssl? && is_production?
    redirect_to :protocol => 'http://', :status => :moved_permanently
  end
end

然后,我在其中添加所有應該使用http的控制器:

before_action :force_no_ssl

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM