授权 REST 资源访问
Authorizing REST resource access
在授权从 REST 端点访问资源时,我是否需要验证整个路径的授权和所有权,还是仅验证所请求的最终资源?即
/companies/12/employees/209/posts/5
所以被访问的资源是post#5,所以我需要验证员工209是post#5的作者并且员工属于公司#12如果提出请求的人可以访问 post #5?如果要验证整个 URL 路径,这似乎很快就会失控。
对于 API,特定的 post 由 URL 标识,而不是 URL 末尾的数字。您的 API 应该将它们视为两个不同的事物:
/companies/12/employees/209/posts/5
/companies/11/employees/209/posts/5
如果你的后端从他们那里提取语义意义很好,但你绝对不应该说 "well, this last part is the unique id for the post, so I'm just going to ignore the rest of the URL"。大多数像您一样使用嵌套结构的人会允许使用多个 ID 为 5 的 post,每个公司的每位员工一个。
对你的API一无所知,这个例子看起来很糟糕应该是三个独立的顶级端点,每个端点用于 /companies
、/employees
和 /posts
。尽可能减少层次结构。
在授权从 REST 端点访问资源时,我是否需要验证整个路径的授权和所有权,还是仅验证所请求的最终资源?即
/companies/12/employees/209/posts/5
所以被访问的资源是post#5,所以我需要验证员工209是post#5的作者并且员工属于公司#12如果提出请求的人可以访问 post #5?如果要验证整个 URL 路径,这似乎很快就会失控。
对于 API,特定的 post 由 URL 标识,而不是 URL 末尾的数字。您的 API 应该将它们视为两个不同的事物:
/companies/12/employees/209/posts/5
/companies/11/employees/209/posts/5
如果你的后端从他们那里提取语义意义很好,但你绝对不应该说 "well, this last part is the unique id for the post, so I'm just going to ignore the rest of the URL"。大多数像您一样使用嵌套结构的人会允许使用多个 ID 为 5 的 post,每个公司的每位员工一个。
对你的API一无所知,这个例子看起来很糟糕应该是三个独立的顶级端点,每个端点用于 /companies
、/employees
和 /posts
。尽可能减少层次结构。