我一直在研究如何设置asp.net核心身份模型,以便向用户提供特定数据的访问权限。
例如,假设我们有10个不同的商店。
我希望能够:
有几种类型的用户,例如业务员和买方。
如何设置:
第一位购买者具有商店1、2和3的数据访问权限。
第二个买家可以访问商店3、4和5的数据。
第三个买方可以访问商店6、7、8和9的数据
第一位可以访问商店3和4的商店库存的推销员。
有人能指出我正确的方向吗?
阿尔贝托
答案 0 :(得分:0)
AspNet核心身份没有提供强制对具体数据(例如特定商店)进行数据访问的方法,这意味着您必须自己实现此目的。但是,您可以在身份模型中描述假定的访问权限:
默认的ASP.NET Core Identity模型包含声明模型,您可以在其中定义自己的声明类型,例如 role 和 store 。然后,您可以将这些声明与您的用户相关联:
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还是其他任何地方,都需要使用自己的过滤器。