背后的多租户

时间:2016-03-11 18:19:39

标签: multi-tenant backand

我已经在Parse中实现了多租户,通过(1)创建特定于租户的角色(每次创建新租户)和(2)将它们分配给与之相关的对象/记录/行的ACL。租客在任何给定的桌子上。

我想知道它在Backand上是否是相同的(基于角色的)逻辑以及它应该如何实现。

任何示例或指向示例的指针都会很棒。

1 个答案:

答案 0 :(得分:3)

Backand中基于角色的安全性将帮助您构建多租户应用程序,包括对象级安全性和预定义过滤器。预定义过滤器对于多租户很重要。它允许您为不同的租户使用相同的对象并过滤数据,以便隔离每个租户。预定义过滤器是始终在服务器中运行并过滤数据的NoSQL或SQL语句。在Backand中,您可以自动创建一个语句,该语句仅过滤请求用户创建的数据。您需要确保所有对象都与用户对象相关,因此这些过滤器语句将起作用。 这是一个自动生成的NoSQL示例,它过滤特定用户的所有项目,除非用户具有管理员角色:

{
  "$or": [
    {
      "'{{sys::role}}'": "'Admin'"
    },
    {
      "user": {
        "$in": {
          "object": "users",
          "q": {
            "email": {
              "$eq": "'{{sys::username}}'"
            }
          },
          "fields": [
            "id"
          ]
        }
      }
    }
  ]
}

这与SQL相同:

( 'Admin' = '{{sys::role}}') or (`items`.`user` in (select `users`.`id` from `users` where `users`.`email` = '{{sys::username}}'))

您可以编辑此语句,以便过滤标识应用中租户的内容。

您可以使用每个对象进行此操作。它位于对象的安全选项卡中。 enter image description here