你如何过滤追加到从超过滤器链的最末端?(How do you append a filter to

2019-09-19 10:51发布

在轨当您注册在他们在控制器类中注册的过滤器之前来抽象超过滤器。 说我想就在过滤器链的末端执行被称为作为过滤器进行身份验证方法。 我可以计算出来的唯一方法是声明的before_filter在我所有的控制器类的最后一个过滤器(也有很多人)。 有没有申报超此过滤器的方式,并仍然最后执行? 我希望它最后执行的原因是控制器类可能会修改认证要求,只是该控制器,我想这些修改,考虑到最终的验证过滤器被调用之前。

Answer 1:

使用prepend_before_filter在你的控制器类的代替before_filterappend_before_filter



Answer 2:

Rails的调用你的ApplicationController第一,当地的一个前...所以你可以(使用你的例子)做这样的事情:

在应用程序控制器,你有你before_filter回调,而被调用相应的方法:

before_filter :authenticate


def authenticate
  # do something
end

在控制器你正在使用的资源类型...

你可以重新定义/替代authenticate

def authenticate
 # do something else
end

你甚至可以选择不使用你的authenticate回调的一些方法

skip_before_filter :authenticate, :only => :my_method_without_auth


文章来源: How do you append a filter to the very end of a filter chain from a superclass?