0

在我们的应用程序中,我们需要让用户在使用基于表单的身份验证登录时选择所需的数据源,我不确定在使用标准的基于表单的身份验证时是否可能。我听说可以使用 TextInputCallback,但不知道如何(以及在​​哪里)实现它。

4

1 回答 1

0

web.xml最多可以有一个标签<login-config>。这意味着您不能在一个 Web 应用程序中使用多个领域。因此,您或多或少需要一个特定于容器的解决方案。

在 Tomcat 中有一个CombinedRealm可以使用其他领域。

包含一个或多个领域的领域实现。按照配置的顺序对每个领域进行身份验证。如果任何领域对用户进行身份验证,则身份验证成功。组合领域时,用户名在所有组合领域中应该是唯一的。

也许它符合您的要求。如果不是并且用户存在于多个领域(使用相同的用户名),您可以使用前缀。例如设置"domain\myuser"为用户名。

如果您使用nested JDBCRealms,您可以创建一个包含前缀用户名的数据库视图(只需将前缀与用户名连接)并将此视图用作用户表。

另一种方法是删除自定义领域中的前缀并调用容器JDBCRealm(或其其他领域),但它需要一些编码。无论如何,这应该不会太难,已经存在的领域可能可以与委托设计模式一起使用。

于 2011-11-03T23:33:38.560 回答