2

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

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

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

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

4

1 回答 1

3

这似乎更像是一个授权问题而不是身份验证问题。您可以使用授权 gem,例如cancan,将角色分配给用户(例如 admin)并向这些角色授予权限。这与 Devise 一起工作得非常好。这是一个教程:

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

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

于 2013-01-19T22:27:48.567 回答