j_security_check проблема с URL

надеюсь, вы можете помочь мне с этим: я работаю с j_security_check и у меня есть эта проблема

У меня есть страница профиля, которая должна быть ограничена любым незарегистрированным пользователем, поэтому я добавляю ограничение безопасности в файл web.xml и отлично работает, если я пытаюсь получить доступ через адресную строку, это показывает мне страницу входа в систему в порядке.

теперь проблема в том, что: в моем примере страницы индекса:

http://localhost/mySite/index.xhtml

есть ссылка

<h:commandLink action="user/Profile" />

это перенаправляет меня на страницу профиля в порядке, но URL-адрес все тот же

http://localhost/mySite/index.xhtml

поэтому j_security_check не показывает страницу входа, насколько я видел, j_security_check работает с URL-адресом, а jsf - нет, и если на странице профиля нажать ссылку на ex: myImages, то теперь URL-адрес говорит:

пример: http://localhost/mySite/user/Profile.xhtml

Почему это произошло? это как-то исправить?? заранее спасибо

альтернатива, которую я использовал, это поставить лайк

<a href="user/Profile.xhtml" >Profile</a>

это показывает мне страницу входа, но если я перехожу на index.xhtml и нажимаю профиль, это не находит страницу, потому что перенаправляет меня на:

пример: http://localhost/mySite/user/user/Profile.xhtml


person ErVeY    schedule 19.08.2010    source источник


Ответы (1)


<h:commandLink action="user/Profile" />

h:commandLink и h:commandButton отправляют HTTP-запрос POST (от h:form) к текущей странице, которая, в свою очередь, пересылает указанный ресурс.

Вы не хотите использовать POST для навигации по страницам. Это не только плохой пользовательский интерфейс (URL не меняется, неинтуитивное поведение при переходе назад/вперед в истории браузера), но и не оптимизировано для SEO (поисковые роботы не индексируют POST).

Вам нужно заменить его на h:outputLink или, как вы узнали, на простой элемент <a>, если вам вообще не нужны какие-либо функции JSF.

Что касается вашей последней проблемы с переходом на неправильный URL-адрес (с дублированным путем): это решается при использовании h:outputLink. Затем JSF примет во внимание текущий контекстный путь.

person BalusC    schedule 19.08.2010