RESTful API用于授权,计划功能控制

时间:2013-01-22 02:43:33

标签: restful-architecture

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

我的问题是: 1)通过RESTful API设计授权是最佳做法吗?或者最好在后端代码中检查授权(user-> role - > privilege)? 例如:我们在执行其他API之前每次都询问user / checkPrivilege / {...}吗?

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

1 个答案:

答案 0 :(得分:1)

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

简短的回答是你通过后端做到这一点。您请求的URI不应包含有关该用户的任何信息。任何会话/标识数据都应该在HTTP标头中发送。

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

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

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

因此,对于每个请求,您都会:

  1. 从HTTP标头中获取用户令牌
  2. 根据该令牌查找用户。
  3. 如果找到了用户,请使用他们的account_id查找与其个人帐户相关联的主帐户
  4. 如果匹配,请授予他们访问权限
  5. 但请记住,您的网址绝不应包含此信息。 RESTful URL是无状态的。