这些表的使用可以在用户/应用程序生命周期的某个时刻进行调整,以满足特定需求。
考虑“采购经理”(PM)的早期阶段,我们可以有三种方法:
应用程序将AspNetUserRoles填充为一个行,以授予“PM”购买权。用户只需要“PM”角色即可发布任何金额的采购订单。
应用程序将AspNetUserRoles填充为一个行,以授予“PM”购买权,并在AspNetUserClaims中填充一个TYPE为“采购金额”的声明,并将值设置为“<1000”,以设置金额限制。用户需要具有“PM”并且订单金额小于声明类型“采购金额”的声明值才能发布采购订单。
应用程序将AspNetUserClaims填充为一个TYPE为“采购金额”的声明,并将值设置为“<1000”。任何用户都可以发布采购订单,只要该用户的金额小于此用户的声明类型“采购金额”的声明值即可。
正如您可能已经注意到的那样,基于角色是粗粒度的刚性权限,从系统管理的角度来看,这将简化应用程序用户的生活。但是,它将从业务需求的角度限制用户的能力。另一方面,基于声明的权限非常细致,需要为每个用户分配权限。基于声明的权限会将业务推向极限,但会使系统管理变得非常复杂。