用户界面-开始使用RubyonRails中的授权或基于角色的权限



我从一周开始就有bigs询问。我有三种不同类型的用户:

  1. 管理员
  2. 编辑器(需要管理员验证才能在上写入或创建数据库)
  3. 简单用户(具有评论、添加收藏夹等基本功能)

目前我只是在安装宝石装置(这很神奇)

那么,对你来说,用不同的特权为我的不同用户做最好的实践是什么?简单布尔值(用户、管理员、编辑器)?例如,我需要用user_id为Editor指定一个特定的帖子?你认识一个能帮助你做到这一点的宝石吗?你认为有可能做一个管理验证系统来注入数据库吗?我如何为编辑职位制作待定列表?

当然,这是很多愚蠢的问题,但我此刻迷路了,所以如果你能帮助我,请:)

感谢

因为这是一个没有代码示例的通用问题,所以在开始解决这个问题时,我将建议一种通用方法。

你需要的是cancancan宝石:

github.com/CanCanCommunity/cancan.

gem提供了可以在rails框架中轻松使用的"授权"框架和功能。

最初的宝石cancan也是由瑞安·贝茨写的。这是一个很好的视频来解释它:

railscasts.com/epicodes/192-授权-带扫描

此外,如果你是rails的初学者,我建议你在不了解"设计魔法"的工作原理的情况下不要使用它。一个好的开始是从头开始尝试身份验证,正如Ryan bates在这里简单地解释的那样:

railscasts.com/epicodes/250-身份验证-从scatch

这将使理解cancancan变得更容易。

我觉得cancan有点头疼,更喜欢使用多态关联。

用户是你的顶级模型与的"档案"

  1. 管理员
  2. 编辑器
  3. 简单用户

您的用户模型可以包含一个名为"profile_id"one_answers"profile_type"的字段

例如:

class User < ActiveRecord::Base
  belongs_to :profile, polymorphic: true
end
class Admin < ActiveRecord::Base
  has_one :user, as: :profile, dependent: :destroy
end

当不同的"概要文件"有不同的数据库字段时,这也很好。您也可以只使用单表继承。

编辑:

在您的用户模型中:

def admin?
  self.profile_type.downcase == "admin"
end

那么您可以使用helper current_user.admin吗?

其余类型也可以这样做。

相关内容

  • 没有找到相关文章

最新更新