【问题标题】:Devise Add Admin Role [closed]设计添加管理员角色[关闭]
【发布时间】:2016-11-24 21:21:49
【问题描述】:

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

【问题讨论】:

标签: ruby-on-rails devise


【解决方案1】:

我将与您分享一种简单的方法。

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

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

附注如果在ApplicationController 内,还要确保这是一个protected 方法

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

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

您想在此处发送forbidden

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-10
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    • 2012-04-30
    • 2020-12-22
    • 1970-01-01
    相关资源
    最近更新 更多