微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CRUD 操作验证

如何解决CRUD 操作验证

假设我有一个包含 3 个表的数据库

  1. 客户
  2. 订单
  3. 客户订单

我使用不记名令牌构建了一个具有标准身份验证的 WebAPI,并且我有一个中间件来从令牌接收所有必要的声明,并且我有一个用于订单的基本 CRUD 操作的控制器。

例如: 删除 - 订单/{id} PUT - 订单/{id}

如何确保用户尝试操作的订单属于当前用户? 在每次操作之前,我是否需要首先查询数据库以确保 OrderId 属于当前 UserId?或者有更简单的方法吗?

解决方法

如果颁发令牌的用户授予客户端应用程序操作订单的权限,则您可以以某种方式获得信息,具体取决于您的身份管理和令牌提供者的选项。

但要确保这个特定订单属于当前用户只能在您的后端检查,这当然需要在每次操作时完成。订单 ID 可能会在请求中被暴力破解(猜测)和操纵,因此您需要对每个请求进行检查。

我建议虽然提取此检查逻辑 - 传递的订单 ID 是否属于令牌中提供的用户 ID - 某些服务方法,使其可从不同的地方重用。在您的情况下,例如将其重用于不同的 CRUD 方法,例如 DELETE 和 PUT。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。