假设我有一个处理用户创建的REST API
POST域名/ api /用户
并接受参数列表,例如
我希望端点是通用的(它应该是创建任何类型的用户的相同端点,不是每个配置文件特定的),但我还要确保请求创建用户的某些客户端具有限制:他们只能创建具有给定配置文件的用户。 虽然强制配置文件类型是调用者的责任,但我很乐意执行验证。
我不喜欢创建另一个端点(然后是另一个端点......然后是另一个端点)的想法。有没有一种标准的方法来处理这样的案例?
我已经阅读了下面的一些回复,为了理解这个问题,可能需要一些额外的信息 我知道我可以基于“调用者”执行验证,例如通过基于ACL的安全性,但这是“正确的”方式来处理这个问题还是有不同的(和广泛采用的解决方案?
由于
答案 0 :(得分:0)
我们有类似的情况,我们的API由公司内部的8-10个客户使用。并非所有人都可以创建具有管理员权限的帐户。我们处理这个的方式是,我们为每个客户端维护一个客户端访问令牌。根据客户端访问令牌,我们让他们创建具有不同权限(管理员,用户,代理)的帐户。
此客户端访问令牌可以在http标头中传递,如internal-access-token = 64888hhihi7869jhdu。您可以在过滤器中包含某些内容,并且可以将配置文件类型设置为admin或agent或user。
此外,即使客户端1在请求正文中以管理员身份发送配置文件值,您仍然可以实际上不让他们创建具有该权限的用户。
答案 1 :(得分:0)
您要执行的任何验证都应在请求到达端点之前完成。
它有各种方法和工具,但它们基本上都做同样的事情,就是在api上放置一个过滤器,从请求中获取标头,验证有效客户端的标头数据,并仅在它有效时继续进行。< / p>
至于你说泛型时,你需要澄清你的意思,你可以创建一个通用的请求体,以适应所有的客户规范。如果需要为不同的客户端创建不同的用户,而不是使用不同的API,则可能需要在API中使用工厂设计模式。