gpt4 book ai didi

.net - 现有的细粒度访问控制库/框架?

转载 作者:行者123 更新时间:2023-12-02 04:14:50 25 4
gpt4 key购买 nike

假设我有这些要求:

角色 AA 中的用户 A 需要能够更新 A1 类型的所有实体。

角色 BB 中的用户 B 需要能够仅更新具有“2”主标识符的 A1 类型的实体,我将其称为 A1(“2”),并且不能更新任何其他 A1 类型的实体,但是可以向实体 A1("2") 添加或删除任意数量的 B2 类型的子实体。

角色 CC 中的用户 C 需要能够编辑属于实体 A1("2") 的这些子 B2 实体的大部分但不是全部属性,角色 CC 的成员也不能从 A1("2") 添加或删除 B2 实体)。

用户 D 在角色 BB 和角色 CC 中,并且作为组合成员资格的结果,具有从两组权限的联合派生的权限(在这种情况下,因为角色 CC 权限是角色 BB 的适当子集,所以这表示用户 D 可以执行角色 BB 允许的所有操作)。

等等。这些策略可能会在部署后更改,因此不需要进行重大的重新开发工作来实现更改(例如解决此问题的声明性方法可能需要什么)。

我假设访问控制列表 (ACL) 将存储在 protected 对象旁边或内部。

我假设编写代码的开发人员需要能够命令式(而不是声明式地)查询单个方法/函数/操作/过程,参数标识当前主体、正在考虑的对象、正在考虑的操作(也许我们称之为特权),然后检索一个 bool 值,指示是否应允许或拒绝该操作。

随意挑战我的假设。

现在,我已经有了一个简单而有效的专有通用解决方案(基于我已经致力于生产并且运行良好的工作)。我正在考虑将其作为开源项目发布。

但在我将它提升到一个新的水平并构建这个野兽之前,我想知道是否有人知道已经被广泛接受的系统、模块或库(不一定必须是 .NET),它已经帮助开发人员实现了这种对实体的细粒度控制(无论是数据库记录还是 ORM 中的对象或其他)。

P.W.在将其发布到 SO 之前查看答案时,我在其他地方找到了一个答案 (SO LINK),这表明 Zend_Acl 可能对 LAMP 项目具有这种功能,但我更喜欢 .NET/Windows 解决方案。

最佳答案

原来我需要的东西(不知道为什么我以前没有看到它)是 Windows AzMan。花了一些功夫来弄清楚如何做类似可继承 ACL 之类的事情,但是通过对范围的一些创造性使用,我拥有了一个非常易于管理、灵活且快速的系统。

AzMan 完全震撼,但它的文档还有一些不足之处。

关于.net - 现有的细粒度访问控制库/框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3358542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com