rest - 'self' 的 REST API 过滤器
问题描述
我有很多 API 可供最终用户和管理人员双重使用。我将使用首选项并举两个例子:
- /user/preferences - 这为最终用户提供了他们的偏好
- /users/{user}/preferences - 这给出了任何人的偏好
显然,这会导致重复。当然,我只能对最终用户和管理员使用“/users/{user}/preferences”,但最终会遇到其他问题:
1) 这个人需要在每次通话中输入他们的用户 ID,这很笨重。
2) 安全性现在将成为一个问题,因为后端需要确保每个请求都得到正确管理,即恶意人员无法输入另一个人的 ID 并检索他们的偏好。
在这里遵循的最佳模式是什么?
解决方案
一种选择是将/user/preferences
take 作为管理员调用的可选?userid=
参数。然后您可以使用相同的端点和基于admin == true && args[userid]
.
关于代理 api 端点的评论也很好,其中一个不太具体的调用 ( /user/preferences
) 调用了一个更具体的端点 ( /user/{userid}/preferences
)。
两者都是不错的选择。很多人把所有的管理员调用放在下面/admin/...
并添加一个处理程序来验证调用者实际上是管理员,然后再路由到常规调用(/admin/users/preferences
-> verify is_admin -> /users/preferences?userid=bob
)。
推荐阅读
- javascript - React Usestate 将状态设置为 false,我正在使用其中包含对象的数组
- php - 需要 curl 等待响应直到下一次执行
- c# - 在 dotnet core 3.1 中使用 IAuthorizationPolicyProvider 的自定义实现进行身份验证
- node.js - MongoDB - 我怎样才能获得最高的 Int
- reactjs - ReactJS 中的递增/递减函数
- excel - 将文件从一个文件夹移动到另一个文件夹 - 错误 53 找不到文件
- node.js - 如何从 Angular 客户端暂停或取消 NodeJs 中的循环
- c++ - 以编程方式复制稀疏文件的最简单方法?
- testing - VS 2019:创建环境变量以在测试项目中使用
- python - 使用 ImageDataGenerator 类时的语法错误,流方法