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