设计/ Rails - 如何只允许管理员为其他人创建帐户?

ben*_*itr 4 authorization ruby-on-rails devise

我正在使用设计作为我的身份验证解决方案,现在我正在考虑授权.在我的项目中,我(管理员)是唯一有权为其他人创建帐户的人.

我想知道是否有办法做到这一点,没有太多的黑客攻击.实际上,如果Devise已经登录,则Devise不允许用户访问注册页面.

感谢您的建议!

cai*_*nne 9

设置:skip => :registrations还会破坏用户编辑其用户信息的能力.如果这不是你的意思,你可以改为创建一个(最小的)自定义注册控制器,只删除new_user_registration_path保留edit_user_registration_path.

# app/controllers/registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController

 def new
    # If you're not using CanCan, raise some other exception, or redirect as you please
    raise CanCan::AccessDenied
  end

end

# routes.rb
devise_for :users, :controllers => { :registrations => "registrations" }
Run Code Online (Sandbox Code Playgroud)

完成此操作后,您还需要将目录移动views/devise/registrations到just views/registrations.