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

StackOverflow https://stackoverflow.com/questions/3421498

  •  26-09-2019
  •  | 
  •  

Вопрос

Я создаю веб-приложение, в котором определенные страницы защищены входом в систему.Для этого я создал область безопасности 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-адрес страницы не изменится.И в этом случае неаутентифицированный пользователь сможет получить доступ к защищенной странице.

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

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top