Modeling asp.net core identity user access
我一直在研究如何设置asp.net核心身份模型,以便向用户提供特定数据的访问权限。
例如,假设我们有10个不同的商店。
我希望能够:
有几种类型的用户,例如业务员和买方。
如何设置:
第一位拥有存储1、2和3数据访问权限的买家。
第二个买家可以访问商店3、4和5的数据。
第三个买方可以访问商店6、7、8和9的数据
第一个可以访问商店3和4的商店库存的推销员。
有人能指出我正确的方向吗?
阿尔贝托
AspNet核心标识没有提供强制对特定数据(例如特定商店)进行数据访问的方法,这意味着您必须自己实现此目的。但是,您可以在身份模型中描述假定的访问权限:
默认的ASP.NET Core Identity模型包含一个声明模型,您可以在其中定义自己的声明类型,例如角色和存储。然后,您可以将以下声明与您的用户相关联:
1 2 3 4 5 6 7 8 9 | User 1 Claims: "role":"buyer" "store":"1" "store":"2" "store":"3" User 2 Claims: "role":"salesman" "store":"3" "store":"4" |
(这是简化的操作,但对您而言可能就足够了。此特定模型中的一个限制是,只能将用户分配给其所有角色的用户。如果用户是商店1的买方,而销售员是销售员对于商店2,您会遇到他有权访问哪些数据的歧义。如果这是必需的,那么您将必须在另一种类型的声明类型中指定每个商店的角色)
这不会强制执行数据访问。对持久化数据进行任何查询时,无论是在SQL,Mongo,redis还是其他任何地方,都需要使用自己的过滤器。