1

我正在开发一个网络应用程序。前端仅通过 RESTful API(称为 SOA 架构)与后端交互,后端仅以 JSON 格式向前端发送数据。

我的问题是:1)通过RESTful API设计授权是最佳实践吗?或者最好在后端代码中检查授权(用户->角色->特权)?例如:在执行其他 API 之前,我们是否每次都询问用户 /checkPrivilege/{...} ?

2) 通常如何在 RESTful API 中实现 3 个具有不同功能和 UI 的计划?例如:我们是否使用 api 来限制此计划的 5 个用户?还是我们在后端代码中做?

4

1 回答 1

1

这是一个老问题,但无论如何我都会回答这个问题,以防万一有人查到。

简短的回答是您通过后端进行操作。您请求的 URI 不应包含有关用户的任何信息。任何会话/标识数据都应在 HTTP 标头中发送。

您的 RESTful API 总是会通过 index.php 之类的前端控制器加载。在这里,您需要引导一个授权工具,以在执行其余代码之前检查每个页面的凭据请求。

这些凭据至少应包含发出请求的用户的唯一授权令牌,并且该令牌需要在每个请求中发送(同样,我建议通过 HTTP 标头)。如果您授予将过期的临时访问令牌,则会获得奖励积分,以防止以后未经授权的访问。

但为简单起见,假设您只是为每个用户使用一个永久唯一令牌。然后,您将将此令牌与有关用户的所有其他数据一起存储,其他数据应包括该用户所属帐户的 account_id。

因此,对于每个请求,您将:

  1. 从 HTTP 标头中获取用户令牌
  2. 根据该令牌查找用户。
  3. 如果找到用户,则使用他们的 account_id 查找与他们的个人帐户关联的主帐户
  4. 如果匹配,则授予他们访问权限

但请记住,您的 URL 无论如何都不应包含此信息。RESTful URL 是无状态的。

于 2013-07-20T06:48:38.403 回答