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

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