【问题标题】:Devise/Rails - How to allow only admin to create account for others?设计/Rails - 如何只允许管理员为其他人创建帐户?
【发布时间】:2011-03-14 19:15:17
【问题描述】:

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

我想知道是否有一种方法可以做到这一点而无需太多的黑客攻击。事实上,如果用户已经登录,Devise 不允许用户访问注册页面。

感谢您的建议!

【问题讨论】:

    标签: ruby-on-rails authorization devise


    【解决方案1】:

    设置: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" }
    

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

    【讨论】:

      【解决方案2】:

      您可以尝试将 rails_admin gem 与 Devise 结合使用,以处理任何特定于管理员的任务。您需要添加更多代码来设置它,但至少可以避免在更改与 Devise 的交互方面绕过解决方案。

      【讨论】:

      • 我跳过了 devise_for :users, :skip => :registrations 的路线。只是我必须为 rails_admin 设置一些授权,一切都完成了!!非常感谢
      • @benoitr - 没问题很高兴我能帮上忙!
      • 谢谢,我也在找这样的东西。
      【解决方案3】:

      实际上,在 Devise 的更高版本中,您只需从模型中删除“可注册”声明,它就会为您解决这个问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多