我想在:authenticate_user!
之后添加第二个过滤器。
目前,我的基本命名空间控制器中有一个典型的设置:
module Admin
class AdminController < ApplicationController
before_filter :authenticate_user!
end
end
但是对此的任何变化都不起作用:重定向不会发生,因此用户在不应该访问时仍然可以访问。
# Doesn't work
before_filter :admin_only
def admin_only
:authenticate_user!
end
# Doesn't work
before_filter do
:authenticate_user!
end
# Doesn't work
before_filter [:authenticate_user!]
如果这些变体中的任何一个有效,我可以添加额外的过滤代码。发生了什么事?
答案 0 :(得分:2)
只需在过滤方法
之前添加额外内容before_filter :authenticate_user!, :my_extra_before_filter_method
首先执行 authenticate_user!
,然后执行自定义过滤器
更新:您也可以拨打before_filter
两次
before_filter :authenticate_user!
before_filter :my_extra_before_filter_method
答案 1 :(得分:0)
This answer至a similar question说明以下内容:
Devise在引擎盖下使用Warden https://github.com/plataformatec/devise/blob/master/lib/devise/controllers/helpers.rb
因此,您只需在Warden中添加新策略即可验证您的用户身份。见 https://github.com/hassox/warden/wiki/Strategies
是否要添加第二个过滤器?或者只是覆盖?