设计before_filter authenticate_admin?

Mar*_*rov 12 ruby-on-rails

我通过添加admin属性为Devise添加了一个admin角色.

你能否告诉我这是否是创建需要管理员用户签名的before_filter的正确方法:

在任何控制器:

before_filter :authenticate_admin!
Run Code Online (Sandbox Code Playgroud)

在application_controller中

protected
  unless current_user.try(:admin?)      
    redirect_to :new_user_session_path      
  end
Run Code Online (Sandbox Code Playgroud)

Mic*_*lva 24

采用这种方法

  before_filter :authenticate_user!
  before_filter do 
    redirect_to new_user_session_path unless current_user && current_user.admin?
  end
Run Code Online (Sandbox Code Playgroud)

这也确保了任何客人也被迫登录.您无需修改​​默认方法即可强制进行身份验证以访问实例方法admin?

def admin?
  self.admin == true
end
Run Code Online (Sandbox Code Playgroud)

我的方法是创建一个角色属性并根据一组预期角色检查其字符串值 - 这种方式更灵活,而不是必须创建许多布尔属性.

  • 不需要定义admin?,如果admin列已经是布尔值,那么你可以只调用user.admin?如果没有管理员,它会自动返回true或false吗?用户方法. (2认同)