我在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: - 除了设计控制器之外,这适用于我的其他控制器 有什么建议??
谢谢,
答案 0 :(得分:1)
您可以使用Bartt-SSL_Requirement,它在Rails 3.1中运行良好,这样您就不需要before_filter和skip_before_filter。在BarttSSLRequirement中,您可以使用“ssl_exceptions”来满足您的before_filter需求。
SSL有时会在开发中出现问题,将其推送到分段,它应该可以正常工作。