坦率地说,我有一个实体级授权的要求。我希望获得有关此权限结构的一些指导,我如何在 .NET 4.5 中实现它,以及是否有办法改进它。
它是这样的:
我有一组数据结构如下:
在哪里
- a
Fleet
是零个或多个 的集合Cars
。 - a
Fleet
可以包含其他Fleets
以后可以出于组织目的对舰队进行重组和移动。
我在系统中有几个角色具有与这些实体相关的权限:
- 所有者:可以从车队中添加或删除汽车
- 经理:将司机分配给汽车
- 司机:被允许简单地驾驶汽车
- 机械师:可以修车
授权逻辑允许User
系统中的 a 被授予对具有一个或多个角色的 aFleet
或 a 的访问权限。Car
以下是一些有助于解释的场景:
- 如果我授予
User
Jim以角色访问Fleet
#5Driver
的权限,则允许他驾驶车队 #2 下的任何汽车。由此产生的权限允许他驾驶 #4、5、6 号汽车 - 如果我授予用户Maura
Car #1
作为 Mechanic 的访问权限,则生成的权限允许她仅修复 #1 车。 - 如果我授予用户Sarah
Owner
使用角色and访问 Fleet #2 的权限Mechanic
,则允许她向 Fleet #2、4、5 添加和删除汽车,并且允许她修复汽车 #1、2、3、4、5、6 . - 如果我授予用户Jeremy对车队 #1 的访问权限以及
Owner
对车队 #6 的访问Driver
权限,则生成的权限允许他向所有车队添加和删除汽车并驾驶汽车 #7、8。他不能驾驶除 # 之外的任何其他汽车7 和 8。
这种实体级授权的好方法是什么?
如果重要的话,我们使用 .NET 4.5.1 和 EF6 Code First,构建在ASP.net Boilerplate 之上。