我们开发了一个多租户系统,其中客户端由子域标识。每个客户端可以有多个用户。
大多数用户只能访问一个子域,但也有用户可以访问多个子域。用户还可以在每个子域上具有不同的角色。
所以我们需要检查用户在当前子域上是否有任何角色。如果不是,则身份验证应该失败。
其次,如果用户可以访问多个子域,他可以在它们之间切换。在这种情况下,必须从数据库中重新查询用户的角色。
目前,我们使用带有自定义 EntityProvider 的非常 hacky 的解决方案。我对那个很不满意。
PS:系统背后的数据库是遗留数据库,所以我们不能将其更改为使用 ACL 或其他任何东西。