Передача дополнительных параметров в j_security_check - PullRequest
0 голосов
/ 03 ноября 2011

В нашем приложении нам нужно разрешить пользователю выбирать нужный источник данных при входе в систему с помощью аутентификации на основе форм, и я не уверен, возможно ли это вообще при использовании стандартной аутентификации на основе форм. Я слышал, что это возможно с помощью TextInputCallback, но понятия не имею, как (и где) его реализовать.

1 Ответ

0 голосов
/ 04 ноября 2011

В web.xml может быть максимум один тег <login-config>.Это означает, что вы не можете использовать более одной области в одном веб-приложении.Итак, вам нужно более или менее конкретное решение для контейнера.

В Tomcat есть CombinedRealm , который может использовать другие области.

Реализация области, которая содержит однуили больше областей.Проверка подлинности выполняется для каждой области в порядке их настройки.Если какая-либо область аутентифицирует пользователя, тогда аутентификация проходит успешно.При объединении областей имена пользователей должны быть уникальными для всех объединенных областей.

Возможно, это соответствует вашим требованиям.Если нет, и пользователи существуют более чем в одной области (с одним и тем же именем пользователя), вы можете использовать префиксы.Например, установите "domain\myuser" в качестве имени пользователя.

Если вы используете вложенные JDBCRealm s, вы можете создать представление базы данных, которое содержит префиксные имена пользователей (просто объедините префикс с именем пользователя) и использовать это представление в качествеuser table.

Другой подход заключается в удалении префикса из пользовательской области и вызове контейнера JDBCRealm (или его других областей), но он требует некоторого кодирования.В любом случае, это не должно быть слишком сложно, уже существующие области, вероятно, можно использовать с шаблоном проектирования делегатов.

...