我正在开发一个网络应用。前端仅通过RESTful API(称为SOA架构)与后端交互,后端仅以JSON方式将数据发送到前端。
我的问题是: 1)通过RESTful API设计授权是最佳做法吗?或者最好在后端代码中检查授权(user-> role - > privilege)? 例如:我们在执行其他API之前每次都询问user / checkPrivilege / {...}吗?
2)通常如何实施具有不同功能的3个计划& RESTful API中的UI? 例如:我们是否使用api来限制此计划的5个用户?或者我们是在后端代码处做的?
答案 0 :(得分:1)
这是一个老问题,但无论如何我都会回答这个问题,以防有些人查看。
简短的回答是你通过后端做到这一点。您请求的URI不应包含有关该用户的任何信息。任何会话/标识数据都应该在HTTP标头中发送。
您的RESTful API总是通过像index.php这样的前端控制器加载。在执行其余代码之前,您需要在此处引导授权工具以检查每个页面的凭据请求。
这些凭证在MINIMUM中应该包含一个唯一的授权令牌,用于发出请求的用户,并且需要在每个请求中发送此令牌(我再次建议通过HTTP头)。如果您授予将过期的临时访问令牌,则奖励积分,以防止以后未经授权的访问。
但为简单起见,假设您只是为每个用户使用永久唯一令牌。然后,您将存储此令牌以及有关该用户的所有其他数据,其他数据应包含该用户所属帐户的account_id。
因此,对于每个请求,您都会:
但请记住,您的网址绝不应包含此信息。 RESTful URL是无状态的。