使用多个before_filter

时间:2011-09-16 02:33:07

标签: ruby-on-rails before-filter rubycas

我想在application_controller中使用两个过滤器,这样,如果第一个过滤器失败:

before_filter CASClient::Frameworks::Rails::Filter

尝试第二个:

before_filter :hmac_filter

这个想法是当有人试图通过Web客户端进入REST服务时, 必须使用rubycas客户端过滤器过滤请求,如果有人试图使用例如使用CURL的客户端进入,第一个过滤器应该失败,但是必须在给定适当参数的情况下应用第二个过滤器。 我可以使用一系列curl请求,第一个过滤器被激活以进行身份​​验证并获得会话cookie,但这不是主意,我必须使用hmac_filter。我都不能修改hmac_filter。

任何想法或建议将不胜感激。感谢

修改

也许这不是最好的解决方案,但最后这是我的实施:

before_filter :choose_auth

def choose_auth
  params[:hmac_auth] ? hmac_filter : CASClient::Frameworks::Rails::Filter.filter self
end

1 个答案:

答案 0 :(得分:1)

在根据处理任何网络请求之前运行过滤器之前,所以我认为这不会对您的情况有所帮助。你需要在行动层面处理这类事情。