代码之家  ›  专栏  ›  技术社区  ›  pdaniels0013

如何在实体框架核心身份中仅将数据限制为登录用户

  •  0
  • pdaniels0013  · 技术社区  · 7 年前

    我正在使用实体框架核心标识。我所有的实体都有一个名为 CreatedBy ,内置标识的外键 User 桌子。我有一个 GetAll() API中的终结点,返回与这些实体关联的表中的所有记录。我想要这个 获取所有() 只返回当前登录用户创建的记录。I can get the UserId HttpContext ,但我想知道是否可以自动限制记录。

    例如,我可以执行这样的操作来获取此行为:

    return _context.Entities.Where(e => e.UserId == userIdFromHttpContext).ToList()

    不过,这是一个额外的条件,我必须把每一个 Where 每一个未来的条款 Get 我写的方法。这对我来说是多余的。

    我只想打个电话

    return _context.Entities.ToList()

    它将自动筛选出与当前登录用户无关的所有记录。

    有什么我可以做的,配置某种“自动”预定义的where子句在 DbContext 这适用于上下文中的所有表,仅一次?我最好注射 请求上下文 进入 DbContex t(我知道这是可以做到的)并在 OnConfiguring() 方法。

    编辑:如果可能的话,我想避免在类的上下文周围使用包装器。这个申请表是由大学生写的,我想让他们用“香草” Entity Framework 获取数据而不是使用某种自定义实现的约定

    1 回复  |  直到 7 年前
        1
  •  0
  •   David Guida    7 年前

    您可以使用全局查询筛选器(更多信息 here ) 简而言之,您可以在调用OnModelCreating期间指定一个Where,并且每次尝试访问该实体集合时都会应用它。

    推荐文章