我有我的應用程序使用SSL與force_ssl方法的一部分,在做相關的控制器是這樣的:如何在不需要SSL時重定向非SSL流量?
class MyController < ApplicationController
force_ssl
end
這工作得很好,但是,在不是本節的部分頁面,我不想使用SSL。當不需要時,是否可以重定向到非SSL協議?
我有我的應用程序使用SSL與force_ssl方法的一部分,在做相關的控制器是這樣的:如何在不需要SSL時重定向非SSL流量?
class MyController < ApplicationController
force_ssl
end
這工作得很好,但是,在不是本節的部分頁面,我不想使用SSL。當不需要時,是否可以重定向到非SSL協議?
你爲什麼不這樣做SSL重定向在HTTP的水平?在HTTP級別執行它更乾淨更快(因爲請求在Rails之前重定向)。
如果您看到force_ssl
源代碼(http://apidock.com/rails/ActionController/ForceSSL/ClassMethods/force_ssl),它只是一個簡單的重定向。
您可能也不想使用:協議選項link_to
。
我不認爲這有一些automagic功能。所以你必須有一些需要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
你是什麼意思「ApplicationController中的簡單條件」。有沒有force_ssl的相反? –
我編輯了我的答案,希望它有幫助 – user12733