【问题标题】:User context in rest application休息应用程序中的用户上下文
【发布时间】:2015-11-18 07:40:39
【问题描述】:

我有一个 angularjs 应用程序,后面有 rest java 后端

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

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

最好的方法是什么?

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

感谢您的帮助

【问题讨论】:

    标签: rest design-patterns web architecture backend


    【解决方案1】:

    由于您提到后端是 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 反向代理,以便由现成的软件处理缓存。

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

    这是否是一个好主意取决于读取和写入之间的比率、数据的最新程度等。但是,在适当的情况下,这种架构可以非常有效。

    【讨论】:

      【解决方案2】:

      您可以在查询时进行检查,也可以在得到结果后进行检查。我倾向于在得到结果后进行检查,以防我需要建模比我想在我的数据库中建模的更复杂的安全约束。例如,如果您有安全组或管理员用户的概念,那么拥有一个抽象层将为您提供很好的帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-23
        • 2015-02-02
        • 2020-06-08
        • 1970-01-01
        • 2013-02-08
        • 1970-01-01
        • 2015-08-31
        • 2019-08-19
        相关资源
        最近更新 更多