REST:当权限取决于请求数据时,首先验证或检查权限吗?

时间:2018-01-18 13:20:40

标签: rest api http-status-code-403 http-status-code-400

我正在编写一个具有文件资源/files的REST API,并授予其他用户访问文件/files/{id}/permissions的权限。

API仅在内部使用,因此没有授权,但所有请求仍然需要userId来代表应该执行请求的用户。

创建新文件的请求可能如下所示:

POST /files

{
  "userId": 1,
  "name": "Example",
  "content": "Example content"
}

返回:

{
  "id": 1,
  "ownerUserId": 1,
  "name": "Example",
  "content": "Example content"
}

我的印象是,首先应检查用户是否被允许执行请求的操作,然后验证请求是否已经过了{我已经关注HTTP decision diagram; {{在is_forbidden之前的1}},但这对于创建权限请求似乎有点反直觉:

is_request_block_ok

我希望这会因POST /files/1/permissions { "userId": -1, // Intentionally invalid value "granteeId": 5, "role": "READER" } 而返回400 Bad Request,但我得到userId = -1,因为我检查了权限(尝试创建权限的用户应该是验证请求之前的文件。

检查许可和验证请求的顺序是否应该颠倒,还是我按照正确的顺序进行?

如果我的执行顺序正确,对上述无效请求的预期响应是(400或403)?

0 个答案:

没有答案