多租户系统 - 为新用户设置 TenantId

优质
小牛编辑
133浏览
2023-12-01

当我们使用 Tenant2 登录系统,并尝试创建一个新用户 User2

你不会收到任何错误,但令人惊讶的是,你不能在列表中看到新创建的用户, User2 发生了什么?

由于我们在迁移类中,把 TenantId 的值设置为 1,现在 User2TenantId 也是 1,并且它也是 主租客

我们需要在已登录的用户中把新用户的 TenantId 设置为同样的值。

修改 UserRepositorySetInternalFields 方法:

  1. protected override void SetInternalFields()
  2. {
  3. base.SetInternalFields();
  4. if (IsCreate)
  5. {
  6. Row.Source = "site";
  7. Row.IsActive = Row.IsActive ?? 1;
  8. if (!Authorization.HasPermission(Administration.PermissionKeys.Tenants) ||
  9. Row.TenantId == null)
  10. {
  11. Row.TenantId = ((UserDefinition)Authorization.UserDefinition)
  12. .TenantId;
  13. }
  14. }
  15. if (IsCreate || !Row.Password.IsEmptyOrNull())
  16. {
  17. string salt = null;
  18. Row.PasswordHash = GenerateHash(password, ref salt);
  19. Row.PasswordSalt = salt;
  20. }
  21. }

除非有租户管理权限,否则我们在这里把该 TenantId 设置为与当前用户相同的值。

现在尝试创建一个新用户 User2b,这次你将在列表中看到新建的用户。