我正在寻找一个用于Rails4的授权宝石。在我使用cancan之前,但它现在看起来已经过时了……
我发现the_role在这里https://github.com/the-teacher/the_role它几乎是我想要的,但有一些恼人的问题。也许有类似的宝石存在?我需要角色,在数据库中存储角色和关联规则的操作。如果gem和bootstrap合作,那就太好了。
附注:对于身份验证,我使用devise。
发布于 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以及简单的基于角色的授权。
发布于 2013-12-01 16:19:50
即使在Ruby之外,你也应该放眼全局,并考虑授权模型。传统的流行模型是基于角色的访问控制(RBAC),这是大多数框架和Ruby中的大多数gem实现的。
但是,如果您有更高级的场景,则需要考虑基于属性的访问控制和eXtensible访问控制标记语言。
使用XACML,您可以实现基于策略的上下文感知授权。例如,您可以编写如下规则:
的患者的医疗记录
以此类推。
我不知道有什么Ruby gem可以将XACML应用到您的Ruby项目中,但是XACML的性质使得您可以很容易地实现自己的授权代理(执行点)。我已经用PHP、Java、.NET和Perl写了一些。
你需要一个授权引擎。有几种开源和供应商解决方案,如SunXACML和Axiomatics。
这里有一些有趣的资源:
发布于 2014-04-28 02:39:07
Cancancan是can的新版本:
https://stackoverflow.com/questions/20299354
复制相似问题