【问题标题】:Rails Devise: How will the Admin be able to Edit other users?Rails Devise:管理员如何编辑其他用户?
【发布时间】:2014-09-29 07:00:08
【问题描述】:

我看到了这个Rails Devise: How to access sign up page after signed in?,它奏效了。现在我想知道如何允许管理员编辑一些用户。有输入吗?提前谢谢!

更新:

我没有为管理员创建任何模型,因为我在 User 模型中迁移了一个 admin:boolean。并且不需要康康康。看看我如何使用管理员:

<% if current_user.admin? %>
   <!-- do something only the admin is allowed to do-->
<% else %>
   <!-- do something by user that can also be done by the admin-->
<% end %>

【问题讨论】:

  • Admin 和 User 是不同的模型?
  • 不。我不必创建任何模型。我刚刚向我的用户模型添加了一个 admin:boolean(通过迁移)。
  • 只需按照正常程序,创建自定义页面,允许管理员编辑一些用户并对其调用更新操作。
  • 我问错了问题。对不起。但是谢谢你!

标签: ruby-on-rails devise


【解决方案1】:

您必须划分两个概念:身份验证和授权。身份验证是当您的应用程序告诉您:“哦,我认识这个用户,我以前见过他,因为我知道他的电子邮件。它就在这里,在数据库中我的用户表的某个地方”。授权是授予您的用户执行某项操作或拒绝访问某项操作的权限。

Devise - 是用于身份验证(注册用户、登录/登录/退出、会话、密码等)的绝佳选择。 Devise 没有授权功能。

所以,您有两种方法:1)自己的代码授权系统,或 2)使用授权 gem。以下是非常适合 Devise 的授权宝石:来自其作者的Cancantutorial

【讨论】:

  • 我问错了问题。对不起。这次真是万分感谢!但由于我的管理员是布尔值,我不需要 cancan。常规用户功能仅用于登录/注销。其余的(用户的 CRUD)由管理员掌握。
  • 您定义管理员的方式(单独的模型、布尔值、字符串/符号值、角色等)与受限/允许的操作绝对无关。 Cancan 不分配/定义用户角色,而是用户做或不做某事的能力。无论如何,是不是cancan,你必须实现这个算法:1)检查current_user是否是admin; 2) 基于逻辑条件“将 current_user 转走,除非 current_user 是管理员”定义方法; 3) 在您的 UsersController 中使用此方法(在您的情况下,除了 :index、:show、:new、:create 之外的每个操作)。
  • 除了,我不推荐cancan,因为它不支持大约一年。使用它的继任者cancancanpundit
  • 是的,我提供了“cancancan”存储库的链接,但输入了错误的名称。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
  • 2012-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多