【问题标题】: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,您可以在其中定义自己的声明类型,例如 rolestore时间>。然后,您可以将这些声明与您的用户相关联:

    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 还是其他任何地方。

    【讨论】:

      猜你喜欢
      • 2021-05-28
      • 2019-03-24
      • 2017-10-20
      • 2020-07-15
      • 1970-01-01
      • 2017-01-04
      • 1970-01-01
      • 1970-01-01
      • 2021-02-07
      相关资源
      最近更新 更多