只允许管理员创建新的管理员

时间:2016-07-17 00:52:02

标签: ruby-on-rails authentication devise

我的博客有一个名为Admin的设计模型。

我绝对不希望我网站的访问者注册为管理员。所以我做了以下事情:

在我的config/routes.rb

devise_for :admins, controllers: { registrations: "registrations" }

之后我创建了一个新的app/controllers/registrations_controller.rb

class RegistrationsController < Devise::RegistrationsController
  before_action :authenticate_admin!
end

但是,当我访问my.site/admins/sign_up作为#34;普通访客&#34; authenticate_admin!挂钩未被调用 - 所以我得到一份完整的工作注册表。为什么这不按预期工作?

1 个答案:

答案 0 :(得分:1)

this question接受的答案可能有所帮助。总结一下,Devise的RegistrationsController skips authentication by default

prepend_before_action :require_no_authentication, only: [:new, :create, :cancel]

所以,跳过它,你的before_action应该有效:

class RegistrationsController < Devise::RegistrationsController
  skip_before_action :require_no_authentication
  before_action :authenticate_scope!
end