【问题标题】:Check for object ownership with Prisma使用 Prisma 检查对象所有权
【发布时间】:2021-08-08 01:25:28
【问题描述】:

我刚开始使用 Prisma。我不清楚的一个方面是检查用户是否对对象具有权限的正确方法。假设我们有 BookAuthor 模型。每本书都有一个作者(一对多)。只有作者有权删除图书。

执行此操作的简单方法是:

prismaClient.book.deleteMany({
    id: bookId, <-- id is known
    author: {
        id: userId <-- id is known
    }
})

但是这种方式很难向用户显示UnauthorizedError。相反,响应将是 500 状态代码,因为我们无法知道查询失败的确切原因。

另一种方法是先查询图书并检查图书实例的作者,这会导致再查询一次。

在 Prisma 中有这方面的最佳实践吗?

【问题讨论】:

    标签: prisma prisma2


    【解决方案1】:

    假设您使用的是 PostgreSQL,最好的方法是使用行级安全性 (RLS) - 但不幸的是,Prisma 尚未正式支持它。 这里有关于这个主题的讨论 https://github.com/prisma/prisma/issues/5128

    对于目前的情况,我认为最好使用附加查询并为用户提供信息反馈,而不是使用您建议的其他方法而不知道为什么没有删除它。

    最终,您可以根据自己的用例来决定 - 了解失败的原因对您来说是否重要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      相关资源
      最近更新 更多