0

我在 Grails 4 中使用基于鉴别器的多租户,从使用 hibernate-filter 插件的 Grails 2 升级。在 Grails 2 中,我可以在 Grails 过滤器中为管理员角色禁用休眠过滤器 - 因此在我的整个应用程序中不需要“if (admin)”检查。我可以以某种方式禁用 Grails 4 中的多租户并使其保持干燥吗?

根据 Jeffs 的评论,我重新表述我的问题以供将来参考:

任何时候可以对来自具有管理员角色的客户端的请求进行身份验证,是否可以完全禁用整个请求的多租户?

4

1 回答 1

0

我想我终于找到了解决方案。调试 Grails 我在 AbstractHibernateDatastore.java 中发现了这个:

Serializable currentId = Tenants.currentId(this);
if(ConnectionSource.DEFAULT.equals(currentId)) {
  disableMultiTenancyFilter();
}

ConnectionSource.DEFAULT当我想禁用多租户时(在我的情况下,当前用户是管理员),这让我想到了从租户解析器中简单地返回而不是租户 ID。

一个简单直接的解决方案,适用于 Grails 4.0.12。我会看看我是否可以将它正式记录下来,因为我的管理用例对于多租户应用程序来说应该并不少见。

于 2021-10-21T11:21:11.987 回答