首页 > 解决方案 > 'self' 的 REST API 过滤器

问题描述

我有很多 API 可供最终用户和管理人员双重使用。我将使用首选项并举两个例子:

显然,这会导致重复。当然,我只能对最终用户和管理员使用“/users/{user}/preferences”,但最终会遇到其他问题:

1) 这个人需要在每次通话中输入他们的用户 ID,这很笨重。

2) 安全性现在将成为一个问题,因为后端需要确保每个请求都得到正确管理,即恶意人员无法输入另一个人的 ID 并检索他们的偏好。

在这里遵循的最佳模式是什么?

标签: restapisecurityrestful-architecture

解决方案


一种选择是将/user/preferencestake 作为管理员调用的可选?userid=参数。然后您可以使用相同的端点和基于admin == true && args[userid].

关于代理 api 端点的评论也很好,其中一个不太具体的调用 ( /user/preferences) 调用了一个更具体的端点 ( /user/{userid}/preferences)。

两者都是不错的选择。很多人把所有的管理员调用放在下面/admin/...并添加一个处理程序来验证调用者实际上是管理员,然后再路由到常规调用(/admin/users/preferences-> verify is_admin -> /users/preferences?userid=bob)。


推荐阅读