建模asp.net核心身份用户访问

时间:2018-10-06 02:32:40

标签: asp.net-core asp.net-identity asp.net-core-2.0 asp.net-core-webapi

我一直在研究如何设置asp.net核心身份模型,以便向用户提供特定数据的访问权限。

例如,假设我们有10个不同的商店。

我希望能够:

有几种类型的用户,例如业务员和买方。

如何设置:   第一位购买者具有商店1、2和3的数据访问权限。   第二个买家可以访问商店3、4和5的数据。
  第三个买方可以访问商店6、7、8和9的数据   第一位可以访问商店3和4的商店库存的推销员。

有人能指出我正确的方向吗?

阿尔贝托

1 个答案:

答案 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还是其他任何地方,都需要使用自己的过滤器。