设计添加管理员角色

时间:2016-11-24 21:21:49

标签: ruby-on-rails devise

我希望知道如何在devise gem中创建一个管理员角色,以及如何创建页面,就像您以管理员身份登录一样可以访问,否则就会得到一个404页面。

1 个答案:

答案 0 :(得分:2)

有一种简单的方法,我会与你分享。

创建一个向您的设计用户添加布尔值的迁移:

rails g migration AddsAdminColumnToUsers

def change
  add_column :users, :admin, :boolean, default: false, null: false
end

这将映射回您的模型并创建user.admin?方法。

对于页面访问,我会在ApplicationController或更好的方法中创建一个名为AuthenticateAdmin的控制器问题。

在其中之一中,创建一个名为authenticate_admin!的方法。

def authenticate_admin!
  authenticate_user!
  redirect_to :somewhere, status: :forbidden unless current_user.admin?
end

P.S。如果在ApplicationController范围内,还要确保这是protected方法

然后,对于您需要限制的每个控制器或操作:

before_action :authenticate_admin!, only: [:action] # `only` part if applicable

您想在此处发送forbidden

原因超出了这个问题的范围,但基本上Not Found与不被授权做某事有所不同。

在HTTP状态代码中,有一个Unauthenticated,但在这种情况下,我们经过身份验证,该人员被禁止访问该页面(即未经授权)。

这种情况需要HTTP状态403 Forbidden。