我有一个实体级别授权的需求,但实际上我还无法理解。我希望能够得到一些关于权限结构的指导,以及如何在.NET 4.5中实现它,是否有可以改进的方法。
我有一组数据结构如下:
在这里:
Fleet
是零个或多个Car
的集合。Fleet
可以包含其他的Fleet
。
为了组织目的,可以随后重新组织和移动车队。
我在系统中担任与这些实体相关的若干权限角色:
- Owner: 可以添加或删除车辆到车队
- Manager: 分配司机给车辆
- Driver: 只允许驾驶车辆
- Mechanic: 可以修理车辆
授权逻辑允许系统中的用户使用一个或多个角色访问 Fleet
或 Car
。
以下是一些示例来帮助解释:
- 如果我授予用户Jim以
Driver
角色的权限,让他可以访问车队Fleet
#5,则他可以驾驶车队#2下的任何车辆。结果的权限允许他驾驶车辆#4,#5,#6。 - 如果我授予用户Maura以
Mechanic
角色的权限,让她可以访问Car #1
,则结果的权限只允许她修理车辆#1。 - 如果我授予用户Sarah以
Owner
和Mechanic
角色的权限,让她可以访问车队#2,则她可以向车队#2,#4,#5中添加或删除车辆,并且可以修理车辆#1,#2,#3,#4,#5,#6。 - 如果我授予用户Jeremy以
Owner
角色的权限让他可以访问车队#1,并以Driver
角色的权限让他可以访问车队#6,则结果的权限允许他向所有车队添加或删除车辆,并且可以驾驶车辆#7,#8。但他不能驾驶除#7和#8之外的其他车辆。
如何进行实体级别的授权?
如果有关系,我们使用建立在ASP.net Boilerplate之上的.NET 4.5.1和EF6 Code First。