首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4授权gem

Rails 4授权gem
EN

Stack Overflow用户
提问于 2013-11-30 18:54:29
回答 5查看 9.5K关注 0票数 10

我正在寻找一个用于Rails4的授权宝石。在我使用cancan之前,但它现在看起来已经过时了……

我发现the_role在这里https://github.com/the-teacher/the_role它几乎是我想要的,但有一些恼人的问题。也许有类似的宝石存在?我需要角色,在数据库中存储角色和关联规则的操作。如果gem和bootstrap合作,那就太好了。

附注:对于身份验证,我使用devise。

EN

回答 5

Stack Overflow用户

发布于 2014-09-04 06:52:43

CanCanCan

CanCan是由Ryan Bates (最著名的是RailsCasts)开发的用于授权的流行gem,在Rails4.0发布之前就被废弃了。由于其受欢迎,基于社区的CanCanCan项目维护了CanCan的更新版本。CanCan提供了一种领域特定语言(领域特定语言),将所有授权逻辑隔离在单个能力类中。

专家

Pundit gem在Rails授权方面越来越受欢迎。Pundit是一个授权系统,它使用简单的Ruby对象作为访问规则。Pundit使用一个名为app/policies/的文件夹,其中包含实现访问规则的普通Ruby对象。

CanCanCan或Pundit或?

随着应用程序复杂性的增加,CanCan能力类可能会变得笨拙。此外,每个授权请求都需要评估完整的CanCan能力类,从而增加了性能开销。Pundit还提供了将访问规则隔离到一个中心位置的优势,使控制器保持精简。Pundit策略对象是轻量级的,可以添加授权逻辑,而不会产生与CanCan一样多的开销。

简单基于角色的授权

在Rails4.1中,您可以使用Active Record Enum实现基于角色的授权。如果您的访问规则很复杂,您可以使用CanCanCan或Pundit来保持控制器的精简,但对于简单的要求,您可能不需要CanCanCan或Pundit。

我在上写了一篇更详细的文章,比较了CanCanCan和Pundit以及简单的基于角色的授权。

票数 30
EN

Stack Overflow用户

发布于 2013-12-01 16:19:50

即使在Ruby之外,你也应该放眼全局,并考虑授权模型。传统的流行模型是基于角色的访问控制(RBAC),这是大多数框架和Ruby中的大多数gem实现的。

但是,如果您有更高级的场景,则需要考虑基于属性的访问控制和eXtensible访问控制标记语言。

使用XACML,您可以实现基于策略的上下文感知授权。例如,您可以编写如下规则:

  • 管理员可以编辑他们自己的文档
  • 医生可以查看分配到

的患者的医疗记录

以此类推。

我不知道有什么Ruby gem可以将XACML应用到您的Ruby项目中,但是XACML的性质使得您可以很容易地实现自己的授权代理(执行点)。我已经用PHP、Java、.NET和Perl写了一些。

你需要一个授权引擎。有几种开源和供应商解决方案,如SunXACML和Axiomatics。

这里有一些有趣的资源:

  • NIST RBAC -
  • NISTRBAC的官方定义
票数 4
EN

Stack Overflow用户

发布于 2014-04-28 02:39:07

Cancancan是can的新版本:

https://github.com/CanCanCommunity/cancancan

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20299354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档