首页 > 解决方案 > 授权 REST 资源访问

问题描述

在授权从 REST 端点访问资源时,我需要验证整个路径的授权和所有权,还是只需要验证请求的最终资源?IE

/companies/12/employees/209/posts/5

所以被访问的资源是帖子#5,所以如果提出请求的人有权访问帖子#5,我是否需要验证员工209是帖子#5的作者并且该员工属于公司#12?如果要验证整个 URL 路径,这似乎很快就会失控。

标签: restrestful-authenticationrestful-url

解决方案


对于 API,特定帖子由 URL 标识,而不是 URL 末尾的数字。您的 API 应将它们视为两种不同的事物:

/companies/12/employees/209/posts/5
/companies/11/employees/209/posts/5

如果您的后端从它们那里提取语义含义,那很好,但您绝对不应该说“好吧,这最后一部分是帖子的唯一 id,所以我将忽略 URL 的其余部分”。大多数像你一样使用嵌套结构的人会允许多个 id 为 5 的帖子,每个公司的每个员工都有一个帖子。

由于对您的 API 一无所知,该示例看起来非常像它应该是三个独立的顶级端点,每个端点用于/companies/employees/posts. 尽可能减少层次结构。


推荐阅读