我的production.rb中有config.force_ssl = true
用于Ruby on Rails 5应用程序,但需要一个控制器NOT force_ssl。如果不配置每个控制器,这可能吗?在单个控制器中有unforce_ssl
的方法吗?
答案 0 :(得分:2)
您可以创建一个安全的控制器:
class SecureController < ApplicationController
force_ssl
end
然后你可以使所有控制器继承SecureController
class ThingsController < SecureController
...
end
除了有问题的那个。您必须对要应用的所有控制器进行一次性更改,但好消息是您只需要执行一次,然后您就可以扩展SecureController的功能。听起来你的问题是要求:skip
或:except
上的before_action
,但我认识的大多数Rails开发人员都认为应该这样做。
答案 1 :(得分:0)
您可以传递以下任何选项以影响before_action 回调
仅- 应仅针对此操作运行回调
除外 - 应该对除此操作之外的所有操作运行回调
if - 命名实例方法或proc的符号;只有在返回真值时才会调用回调。
除非 - 命名实例方法或proc的符号;只有在返回false值时才会调用回调。
这是使用控制器级别force_ssl。
配置级别force_ssl是应用程序范围