Адресная строка пересылки JSF / url - редирект не решает проблему - PullRequest
0 голосов
/ 01 апреля 2011

Хорошо, у нас есть единый вход, и пользователь, скорее всего, войдет на сайт www.blabla.com/AppName/, чтобы попасть на наш сайт.Затем мы определяем сайт приветствия, используя фазселистинатор, чтобы проверить:

пытается ли пользователь получить доступ к сайту приветствия?да -> попытаться войти - работает?да -> получить роли пользователя -> перейти на соответствующий сайт для этого конкретного пользователя.

Например, пользователь niceBelly переходит на страницу /somewhere/in/many/folders/beer.jsf, а пользователь barbie - в /breasts/pink.jsf. Перенаправление в этом приложении по некоторым причинам невозможно.

в результате при достижении, например, страницы pink.jsf в адресной строке по-прежнему отображается blablaba.com/AppName/ при нажатии на первую ссылку браузер использует адрес формы в качестве нового URL-адреса, например, на welcome.jsf..jsf.На странице coolstuff у меня теперь есть URL последней формы, например, welcome.jsf.Затем, что касается классных вещей, я нажимаю на ссылку и получаю классные вещи на следующей странице в виде URL-адреса и т. Д.

Есть ли способ решить эту проблему / обойти ее?

1 Ответ

3 голосов
/ 01 апреля 2011

Учитывая симптомы, вы фактически не перенаправляете запросы, а фактически перенаправляете запросы.Переадресация real будет иметь место при вызове

externalContext.redirect(url);

в контексте JSF или при добавлении

<redirect />

в случай навигации.Все остальные способы эффективно продвигаются вперед.Что касается симптомов, вы используете командные ссылки вместо выходных ссылок для перехода на другую страницу.Командные ссылки будут отправлять POST-запрос на текущий URL, а JSF будет использовать RequestDispatcher для указания места назначения запроса / ответа, если в навигационном регистре нет <redirect />.Переадресация не дает указание браузеру запускать новый запрос GET по целевому URL, и, следовательно, URL-адрес в адресной строке браузера не изменяется.Переадресация real сделает именно это.

См. Также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...