休息应用中的用户上下文

时间:2015-08-24 19:03:39

标签: rest design-patterns web architecture backend

我的 angularjs 应用程序后面有 rest java后端

我想将每个用户限制在他的上下文中,就像用户只能访问属于他的关系数据库中的数据一样

(like, user can only have access to his calculations data, only to his files, etc).

这样做的最佳方法是什么?

我可以检查用户是否可以访问每个数据库查询中的数据,但它看起来像很多连接结构,也许有另一种解决该问题的好方法?

谢谢你的帮助

1 个答案:

答案 0 :(得分:4)

由于您提到后端是REST后端,因此您可以考虑使每个用户的资源都是唯一的。这可以通过在URL上划分用户数据来完成。这是一种常见的方法:

http://api.example.com/users/1234/files
http://api.example.com/users/1234/files/6748
http://api.example.com/users/1234/stuff/32
http://api.example.com/users/5347/files
http://api.example.com/users/5347/stuff/218

当每个资源都是唯一的时,这意味着您可以使用HTTP缓存标头缓存它们。也许您可以在客户端应用程序和REST API之间设置HTTP反向代理,以便通过现成的软件处理缓存。

这样做的好处是,即使数据库查询由于连接而变慢,也可能不会经常访问数据库,因为大多数情况下客户端将从反向代理获得所需的答案(或它自己的缓存。)

这是否是一个好主意取决于读写比例,最新数据必须如何等等。但是,在适当的情况下,这种架构可以非常有效。