2023-02-16 350
我们目前设计 a 用户角色和权限系统在我们的Web应用程序(ASP.NET)中,似乎我们有几个案例 在古典基于角色的访问控制(RBAC)中不适合.我会发布几个问题,每个问题都致力于特定的案例.这是我的第二个问题(第一个问题是这里:非RBAC用户角色和权限系统:检查用户的城市).
我们有以下情况:我们需要在我们的Web应用程序中实现 manager角色.但是,经理可以属于一个或多个公司(在我们正在创建这个Web应用程序的一大公司内).比如说,可以有”公司经理A和B”,”C公司经理C”等.
取决于经理所属的公司,他有接入对某些操作:例如,他只能与他所属的公司的客户沟通.也就是说,”公司A和B的经理”只能与公司A和B的客户联系,而不是公司C.他也可以查看客户的详细信息A和B而不是C,等等.
似乎这种情况落在rbac内.但是,这不是真正的情况.我们需要创建一个 mongerole类,它将有一个公司属性 – 即,这不会只是作为权限集合的角色(就像在古典的RBAC中一样),但具有属性的角色!
这只是具有属性的角色的一个示例.将有其他人:例如,一个管理员角色,也属于许多公司,也将有其他自定义属性.
这意味着我们将是一个层次结构或角色等级:
class Role – base class
class ManagerRole : Role
List Companies
class AdministratorRole : Role
List Companies
Other properties
我们调查了纯RBAC及其在几个系统中的实现,而发现没有系统,具有层次结构或角色,每个系统都有自定义属性.在RBAC中,角色只是权限的集合.
我们可以使用权限使用,如Managerpermission,管理员普及,但是,这有很多缺点,主要是我们无法分配像”经理的角色公司A和B”向用户直接到,但必须创建一个包含公司A和B的管理员的角色……此外,一个”经理”似乎是”角色”(公司的角色)而不是” “从语言观点来看.
对此主题的任何想法以及此领域的任何经验!
谢谢.
让我第一次说你的两个问题都基本相同,应该合并.在同一概念的多个变体中没有值.
您希望为基本角色添加额外的任意歧视.
要实现这种RBAC并保留利用任何内置基础架构的能力,您需要进行一些妥协并构建一些自定义实现.
第一步是采用角色定义约定的妥协.例如当您想确定用户的’公司””””””””””””””””””””””””””””””””””””’)是一个.
第二步是一个自定义角色进一步的实现,可以解析并适当地查询维护层次关系的底层数据源,您必须为维护提供自定义UI.
您需要至少实现ASP.NET使用的方法,以确保以正确的格式检查或输出角色.
IsUserInRole将获得一个字符串,您将使用会议将解析为验证的组成部分,如前所述.
可以在Cookie中缓存角色时调用
GetRolesForUser,并且必须执行角色的分层递归并输出所有排列.例如用户是Companya和CompanyB的Manager,因此GetRolesForUser(“user”)应返回由Vapue manager-companyA和manager-companyB组成的数组,以便使用缓存角色的ASP.NET基础架构,并且不互动地研究RoleProvider.
这种方法将为您提供最广泛的ASP.NET RBAC设施的可用性,同时为您提供所需的自定义.
所以,为了得出结论,只要您可以使用现有基础架构更少地调整您的期望和/或重新定义您的需求,您必须实际设计,实现,测试和维护越少(更少)代码且您必须花费更多的时间来集中在您的系统的其他方面,这些方面尚未拥有建立的基础设施.
我目前正在努力实现自己的rbac库版本(出于学习RBAC的简单原因,同时专门为我的Codebase/数据库进行了调整). (注意:约束是硬部分)!!
我处理的方式(尚未完全实现)是我创建的组,基本上是用户的集合.所以在这种情况下,我会创建三组;公司,公司B和Company C,然后适当地将每个用户分配给这些群体(公司).
然后,您可以将管理器角色分配给特定用户,并且还可以分配组的角色.我喜欢这一点,因为它允许我一次向许多用户添加一个滚动(在DB交易期间非常快,并且一旦缓存内存占用空间要小得多).
所以在您的示例中,假设您有一个在UI中显示的机构模型(或对象实例).只需单击它,然后选择”安全”菜单,您可以获得一个窗口,允许您添加用户/组成员(如Washows Security).通过添加(组)公司A并允许”读取”权限,您实质上允许该组中的所有用户读取对该公司的访问权限及其子对象,它是客户端联系人和数千个其他模型实例.
它可能并不完美,但它是我到目前为止找到的最好的解决方案(尽管我仍然有疑问,我要为此提出一个问题).
如果您的问题会通过实现您可以实现的角色的继承来解决.
您的示例是另一个基于属性的访问控制方式的另一个机会(例如,允许具有管理者角色的用户并为公司工作的用户).尽管如此,实现一个RBAC系统更难.
以上所述是小编给大家介绍的非RBAC用户角色和权限系统:一个有属性的角色,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/33950.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态