Rails 4授权gem

 php小学生 发布于 2023-02-13 17:42

我正在寻找导轨4的授权宝石.在我使用cancan之前,它现在看起来已经过时了......

我在这里找到了the_role https://github.com/the-teacher/the_role 这几乎是我想要的,但有一些恼人的问题.也许存在类似的宝石?我需要角色,在数据库中存储角色以及在规则中存储关联操作.如果宝石与bootstrap合作,它会很棒.

PS对于身份验证我使用设计.

2 个回答
  • CanCanCan

    CanCan是由Ryan Bates(最着名的RailsCasts)开发并在Rails 4.0发布之前放弃授权的流行宝石.由于其受欢迎程度,基于社区的CanCanCan项目维护了CanCan的更新版本.CanCan提供DSL(特定于域的语言),可隔离单个Ability类中的所有授权逻辑.

    权威人士

    该权威人士宝石日益普及Rails的授权.Pundit是一个授权系统,它使用简单的Ruby对象来访问规则.Pundit使用名为app/policies /的文件夹,其中包含实现访问规则的纯Ruby对象.

    CanCanCan或Pundit还是?

    随着应用程序的复杂性增加,CanCan Ability类可能变得笨拙.此外,每个授权请求都需要评估完整的CanCan Ability类,从而增加了性能开销.Pundit还提供了将访问规则分隔到中心位置的优势,使控制器保持紧凑.Pundit策略对象是轻量级的,添加授权逻辑而没有CanCan那么多的开销.

    简单的基于角色的授权

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

    我写了一篇关于Rails授权的文章,详细介绍了CanCanCan和Pundit以及简单的基于角色的授权.

    2023-02-13 17:46 回答
  • 您甚至应该在Ruby之外查看全局,并考虑授权模型。传统的流行模型是基于角色的访问控制(RBAC),这是大多数框架以及大多数gem实现的(在Ruby中)。

    但是,如果您有更高级的方案,则需要考虑基于属性的访问控制和XACML(可扩展访问控制标记语言)。

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

    经理可以编辑他们拥有的文档

    医生可以查看分配给他们的患者的病历

    等等...

    我不知道有任何Ruby宝石可将XACML应用于您的Ruby项目,但是XACML的性质使您可以轻松实现自己的授权代理(执行点)。我已经用PHP,Java,.NET和Perl编写过一些。

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

    以下是一些有趣的资源:

    NIST RBAC -RBAC模型的正式定义

    NIST ABAC

    OASIS XACML

    2023-02-13 17:46 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有