Проблема с отображением URL в фильтре сервлетов - PullRequest
1 голос
/ 29 сентября 2010

У меня уже есть два фильтра, которые обычно проверяют правильность сеанса.Если сеанс действителен, он будет перенаправлен на ExpenseDetailsManagement.html else ExpenseManagementLogin.html.Конфигурация web.xml выглядит следующим образом:

<filter>
    <filter-name>ExpenseAuthentication</filter-name>
    <filter-class>com.pricar.hibernate.ExpenseAuthentication</filter-class>
</filter>
<filter>
    <filter-name>ExpenseAuthenticationFilter</filter-name>
    <filter-class>com.pricar.hibernate.ExpenseAuthenticationFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>ExpenseAuthentication</filter-name>
    <url-pattern>*/ExpenseDetailsManagement.html</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>ExpenseAuthenticationFilter</filter-name>
    <url-pattern>*/ExpenseManagementLogin.html</url-pattern>
</filter-mapping>

Вышеуказанные два работали нормально.

Путь к приложению выглядит как http://localhost:8080/Hibernate/ExpenseManagementLogin.html

Если я попытаюсь использовать http://localhost:8080/Hibernate, ExpenseManagementLogin.html загружается, даже если у меня есть действительный сеанс.

Для этого я попробовал несколько шаблонов отображения URL, таких как Hibernate/, /Hibernate/, /*, затем он заканчивается бесконечным циклом или ошибкой не найденного ресурса.

Мое веб-приложениепросто есть две HTML-страницы, одна для входа и другая для приложения.

Есть предложения?

1 Ответ

1 голос
/ 29 сентября 2010

Почему вы используете два фильтра?

Удалить ExpenseAuthentificationFilter.В простейшем случае поместите файл ExpenseManagementLogin.html в корень войны.Добавьте сервлет или JSP в качестве цели формы входа.Настройте страницу ExpenseDetailsManagement.html в качестве страницы по умолчанию.

Тогда возможен следующий сценарий:

  • Пользователь вызывает http://localhost:8080/Hibernate
  • Сервер перенаправляет по умолчаниюpage http://localhost:8080/Hibernate/ExpenseDetailsManagement.html
  • Когда браузер запрашивает эту страницу, вызывается оставшийся фильтр сервлетов.
  • Внутри фильтра перенаправьте на http://localhost:8080/Hibernate/ExpenseManagementLogin.html, если действительный сеанс не активен.
  • Пользователь заполняет форму авторизации и отправляет форму.На странице сервлета или JSP (целевой обработчик отправки) вы проверяете логин и пароль, и если он действителен, вы отправляете перенаправление на http://localhost:8080/Hibernate/ExpenseDetailsManagement.html.
  • Теперь, когда браузер запрашивает эту сторону во второй раз,Фильтр сервлетов видит действительный сеанс и ничего не делает, поэтому защищенная страница может быть доставлена.

Вы также можете использовать JAAS для обработки входа в систему и аутентификации.

...