我的应用程序的一部分正在使用带有force_ssl方法的SSL,在相关控制器中执行类似的操作:
class MyController < ApplicationController
force_ssl
end
但是,这不适用于不属于本节的页面,我不想使用SSL。是否可以在不需要时重定向回非SSL协议?
答案 0 :(得分:1)
为什么不在HTTP级别进行ssl重定向?在HTTP级别执行此操作更干净,更快(因为请求在Rails之前重定向)。
如果您看到force_ssl
源代码(http://apidock.com/rails/ActionController/ForceSSL/ClassMethods/force_ssl),则只需进行简单的重定向。
您可能也不想使用link_to
的协议选项。
答案 1 :(得分:0)
我不认为这有一些自动功能。所以你必须有一些需要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