我的博客有一个名为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!
挂钩未被调用 - 所以我得到一份完整的工作注册表。为什么这不按预期工作?
答案 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