Определите целевой URL-адрес на странице входа, используя проверку подлинности с помощью форм с помощью WebLogic.

У меня есть приложение, работающее под WebLogic, которое использует стандартную аутентификацию форм. Страница входа — это JSP, представляющая форму входа, которая будет опубликована в j_security_check. Поэтому, как и следовало ожидать, когда пользователь пытается получить доступ к странице, но еще не прошел аутентификацию, он будет перенаправлен на файл login.jsp.

Мой вопрос: как я могу определить страницу, которую пользователь пытался открыть, прежде чем WebLogic перенаправил его на страницу входа? Я хочу использовать это, чтобы изменить содержимое страницы входа в систему в зависимости от назначения пользователя. Я не вижу ничего в объекте запроса, который сказал бы мне об этом.

Спасибо за любые подсказки!


person Chris Thornhill    schedule 02.02.2010    source источник


Ответы (2)


Вы можете использовать:

weblogic.servlet.security.ServletAuthentication.getTargetURLForFormAuthentication(request.getSession())

Это общедоступный статический метод, который возвращает строку.

Я проверил, и это работает для меня.

person Alex Liu    schedule 25.02.2011
comment
Обычно запрошенный URL-адрес хранится в атрибуте области запроса с именем 'javax.servlet.forward.request_uri', который определен в константе RequestDispatcher.FORWARD_REQUEST_URI. Однако weblogic не добавляет его в атрибуты запроса. Я думал, что добавление этого комментария облегчит другим получение этого ответа. Надеюсь, они найдут его раньше меня :) - person Mehdi Javan; 05.02.2018

Мы пришли к выводу, что невозможно узнать целевой URL-адрес со страницы входа. Я был бы не против оказаться неправым. :)

Тем временем решение состояло в том, чтобы развернуть контент во второй WAR с собственной страницей входа, предоставляющей альтернативный контент. Много накладных расходов на то, что должно быть простой проблемой для решения.

person Chris Thornhill    schedule 26.03.2010
comment
Я только что попробовал решение BaluSc на Weblogic 10.3 сегодня и могу подтвердить, что ${requestScope['javax.servlet.forward.request_uri']} работает. - person JoseK; 28.02.2011