2

我想在: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!] 

如果这些变体中的任何一个可行,我可以添加我的额外过滤代码。这是怎么回事?

4

2 回答 2

3

只需在过滤方法之前附加您的额外内容

before_filter :authenticate_user!, :my_extra_before_filter_method

authenticate_user!将首先执行,然后是您的自定义过滤器

更新:你也可以打电话before_filter两次

before_filter :authenticate_user!
before_filter :my_extra_before_filter_method
于 2013-03-08T00:16:50.710 回答
0

This answer to 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

是否要添加第二个过滤器?或者也许只是覆盖?

于 2013-03-08T00:20:17.307 回答