Переадресация j_security_check - PullRequest
6 голосов
/ 02 марта 2012

Я изучаю Java-сервлеты в среде Tomcat.Я учусь, как использовать авторизацию на основе формы, используя j_security_check.Итак, в моем сервлете у меня есть страница входа, которая имеет j_username и j_password.В файле web.xml этого сервлета у меня есть список страниц приветствия, указывающий мою целевую страницу «landing.html».Таким образом, в идеале, после успешного входа в систему, я хочу, чтобы пользователь перенаправлялся на страницу «landing.html».

Без аутентификации (без аутентификации на основе форм), мой сервлет открывается и переходит в «landing.html»."страница, как и ожидалось (" localhost: 8080 / MyServlet "- показывает содержимое landing.html).

Однако теперь, после успешного входа с помощью j_security_check, по какой-то причине я автоматически перенаправляюсь наФайл .css для файла "landing.html".Я не могу понять, почему это происходит.

Есть ли конкретный способ, как я могу сказать серверу, что после успешной аутентификации я просто загружаю страницу "landing.html" и не пересылаю ее куда-либо еще?

EDIT

* Хорошо, я решил это.Файл css, который загружался после успешной аутентификации, был указан в тегах <head></head> страницы login.html, где находятся j_username и j_password.Я добавил этот css-файл, чтобы дизайн страницы входа совпал с остальным сайтом.Я предполагаю, что, когда сервер перезагружает нужный ресурс, по какой-то причине он просто перезагружает файл top css из тега head.Очень странно.Итак, является ли j_security_check лучшим способом выполнить любую аутентификацию для веб-сайтов на Tomcat или есть лучший и более надежный способ? *

1 Ответ

10 голосов
/ 02 марта 2012

Поведение проверки подлинности на основе форм выглядит следующим образом:

  • браузер отправляет запрос на защищенный URL
  • сервер перехватывает свой запрос, видит, что вы не прошли проверку подлинности, и перенаправляет на страницу формы loginf
  • пользователь входит
  • сервер перенаправляет на URL, который запустил аутентификацию: защищенный URL запрашивается на первом шаге.

Это хорошо, потому что позволяет пользователю сделать закладку на защищенной странице, вернуться на следующий день к этой странице с закладками, войти в систему и сразу перейти на страницу с закладками, а не на страницу приветствия.

Я предполагаю, что целевая страница не защищена, но ее CSS-файл защищен. Таким образом, запрос, который запускает аутентификацию, является запросом, который пытается загрузить файл CSS, что приводит к перенаправлению пользователя в файл CSS.

...