Проблема с пересылкой JSF и ограничением безопасности

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

Я использую правила навигации, чтобы перенаправить пользователя в защищенные области веб-сайта:

<navigation-case>
        <from-outcome>showResults</from-outcome>
        <to-view-id>/SecureUser/Reservation/New/AvailableResults.xhtml</to-view-id>
        <redirect/>
</navigation-case>
(etc...)

Это прекрасно работает. Но если я пропущу тег перенаправления в навигационном случае, URL-адрес страницы не изменится. И в этом случае неавторизованный пользователь может получить доступ к защищенной странице.

Каков наилучший способ сделать это? Достаточно убедиться, что страница перенаправляется, а не перенаправляется? Должен ли я писать код на каждой защищенной странице, который проверяет, вошел ли пользователь в систему или нет?


person Akshay    schedule 06.08.2010    source источник


Ответы (1)


Использование POST для навигации по страницам считается плохой практикой. Не используйте JSF h:commandLink или h:commandButton для простой навигации по страницам. Оба генерируют форму POST, которая совершенно не нужна и не оптимизирована для SEO для простой навигации. Вместо этого используйте h:link или h:button. Он отображает простую ванильную ссылку GET и форму GET соответственно.

Если вы все равно отправляете форму POST и страница результатов отличается от страницы формы, используйте Шаблон PRG (Post-Redirect-Get) считается хорошей практикой. Вы можете использовать <redirect/> для этого.

person BalusC    schedule 06.08.2010