ruby-on-rails - 通过 Devise 使用已登录的管理员用户创建新用户

标签 ruby-on-rails ruby devise

我正在使用 Devise 在 Rails 上构建一项服务,该服务需要“管理员”用户将常规用户添加到其组织帐户。 Devise 的默认行为不支持此功能,因为当登录的管理员用户尝试创建常规用户帐户时,会调用 ':require_no_authentication' 方法。

实现我正在寻找的功能的推荐方法是什么?

  • :require_no_authentication 由 prepend_before_filter 中调用 Devise::RegistrationsController 类,而不是在其中之一 RegistrationsController 方法,所以我不知道这是否可以 被覆盖(如果我错了请纠正我)。
  • 我相信将管理员用户与普通用户分开会 工作,但是这些用户将具有非常相似的属性,所以我 相信这样做会增加不必要的重复。
  • 我目前正在尝试创建新的管理员用户(他们又创建 普通用户所属的组织)使用常规 使用“users#new”和“users#create” Controller 设计注册流程 操作,并允许管理员通过“users#add”添加新用户 行动。

如果有另一个好的用户身份验证 gem 更适合我的需求,我很乐意考虑切换到它。

最佳答案

这似乎更像是授权问题而不是身份验证问题。您可以使用授权 gem,例如 cancan ,将角色分配给用户(例如管理员)并向这些角色授予能力。这与 Devise 配合使用效果非常好。这是一个教程:

http://www.tonyamoyal.com/2010/07/28/rails-authentication-with-devise-and-cancan-customizing-devise-controllers/

编辑:我想我可能误解了你的问题。也许您需要的只是另一个 Controller 来处理 Devise Controller 之外的用户创建。您可以使用 cancan 将此 Controller 的访问权限限制为仅管理员。

关于ruby-on-rails - 通过 Devise 使用已登录的管理员用户创建新用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14419527/

相关文章:

ruby-on-rails - 如何在所有模型上添加 has_many 关联

ruby-on-rails - 对于新的 ActiveRecord 模型,为什么有些 has_many :through associations add a (1=0) predicate and distinct clause to the sql query?

ruby-on-rails - 尝试使用 Capybara、Cucumber、RSpec 和 Devise 登录时重定向到 example.com

ruby-on-rails - Rails 加载我的@items n*n 次

ruby-on-rails - 我如何找到可以贡献的开源项目(Ruby、Rails)

ruby-on-rails - Ruby 真的有设计模式可以解决的设计问题吗?

ruby-on-rails - 如何同时使用设计和门卫 gem ?

ruby-on-rails - 在字符串 rails 中提取数组

ruby - 自动更正库中的线长

ruby-on-rails - 通过设计 : Attempt to send authentication email leads to OpenTimeout error when using Cloud 9 dev environment 发送网格