【问题标题】:Modeling asp.net core identity user access建模 asp.net 核心身份用户访问
【发布时间】:2019-03-11 12:41:16
【问题描述】:
我一直在研究如何设置 asp.net 核心身份模型,以便让用户可以访问特定数据。
例如,假设我们有 10 家不同的商店。
我希望能够:
拥有多种类型的用户,例如销售员和采购员。
我该如何设置:
第一个拥有商店 1、2 和 3 数据访问权限的买家。
第二个拥有商店 3、4 和 5 数据访问权限的买家。
第三个拥有商店 6、7、8 和 9 数据访问权限的买家
第一个可以访问商店 3 和 4 的商店库存的销售员。
谁能指出我正确的方向?
阿尔贝托
【问题讨论】:
标签:
asp.net-core
asp.net-identity
asp.net-core-2.0
asp.net-core-webapi
【解决方案1】:
AspNet Core Identity 不提供强制对具体数据(例如特定存储)进行数据访问的方法,这意味着您必须自己实现这一点。但是,您可以在身份模型中描述假定的访问权限:
默认的 ASP.NET Core Identity 模型包含一个 claim-model,您可以在其中定义自己的声明类型,例如 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 还是其他任何地方。