【问题标题】:Outsystems:Is it possible to have same user in different tenants in a Multi-tenant applicationOutsystems:在多租户应用程序中是否可以在不同租户中拥有相同的用户
【发布时间】:2018-06-14 07:42:52
【问题描述】:

我创建了一个多租户应用程序,其中每个租户都有不同的用户集。我正在尝试实现相同用户可能存在于不同租户中的功能。外系统是否提供这样的功能或者我必须创建我的自定义逻辑? 现在,我确实在 2 个不同的租户中创建了一个具有相同用户名的用户,并且在登录期间我正在向用户展示选择租户。但是在更改租户并登录到该租户时,环境不会切换到用户选择的那个租户。

下图是切换租户和登录客户的逻辑示意图。

在调试期间,我看到在执行 TenantSwitch 操作后它确实更改了 Site.TenantID 属性,但在 User_Login 操作恢复为第一个之后租户不是所选的一个用户。

【问题讨论】:

    标签: multi-tenant outsystems


    【解决方案1】:

    当您使用 User_Login() 时,系统会将您登录到它在具有该用户名的数据库中找到的第一个租户,从而忽略您的 TenantSwitch()。

    因此,如果您想在您的情况下登录到一个特定的租户,您需要更加明确,而是在租户切换之后使用 Login() 操作。

    如需详细说明,请使用示例代码查看以下 deepdive Master Class on Multi-Tenancy,从大约 27:20 开始。

    【讨论】:

    • 我遵循了你的方法,在 User_login 之后我检索了用户 id 并执行了租户切换,然后是登录操作。
    【解决方案2】:

    这不是开箱即用的,因为 OutSystems 将用户(和所有实体)分配给特定租户。属于单租户模块的实体被分配给默认租户。

    OutSystems 在每个实体上使用隐藏的 .Tenant_Id 属性来指示该用户属于哪个租户。您可以取消隐藏用户实体的此属性,方法是选择它,单击更多...,然后勾选高级选项卡中的相关框。然后您可以直接访问该属性,但请注意,这将阻碍 OutSystems 自动执行某些操作以确保您访问租户特定数据的能力。

    当您使用 User_Login 操作时,OutSystems 将从 User.Tenant_Id 属性推断出要使用的租户,无论您之前已将其切换到哪个租户。用户需要为他们需要使用的每个租户提供一个帐户,但是没有理由不能在后台通过操作系统在登录前获取正确的用户名来完成。不过,您需要确保它们都保持同步,尤其是c的密码。

    【讨论】:

      猜你喜欢
      • 2020-09-26
      • 2018-04-05
      • 1970-01-01
      • 2019-11-12
      • 2019-12-24
      • 2018-06-17
      • 2021-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多