使用before_filter访问两个模型身份验证

时间:2018-04-27 09:58:21

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

我正在使用Rails 4应用程序。我有用户模型和操作员模型(这就像一个超级管理员)。让控制器说testcontroller有以下过滤器来验证用户是否已经过身份验证。

before_filter :authenticate_user!

现在我必须以操作员的身份访问此testcontroller。 (在我的情况下,用户和操作员的身份验证是不同的)。当我尝试访问,因为我的会话将是current_operator,控制器的before_filter具有autheticate_user!阻止了我。

我尝试将测试代码添加到测试控制器

before_filter :check_operator
#before_filter :authenticate_user!

private

def check_operator
if current_operator!=nil      
  :authenticate_operator!
else
  :authenticate_user!
end

仍然无法作为Operator访问testcontroller。任何想法都会对我有所帮助

1 个答案:

答案 0 :(得分:0)

我可能对此有一些想法:

  • 确保您的控制器不继承另一个调用authenticate_user!
  • 的控制器
  • 请注意:如果您作为用户而不是运营商进行了身份验证,则check_operator中的代码永远不会落入authenticate_user!,因为您始终会authenticate_operator!

注意:您应该使用before_action,这是before_filter的新语法:)