операция после входа в систему с помощью j_security_check

#jakarta-ee #jsf-2 #glassfish-3 #j-security-check

#джакарта-ee #jsf-2 #glassfish-3 #j-проверка безопасности

Вопрос:

Я использую аутентификацию на основе формы и j_security_check в своем приложении j2ee, которое работает на glassfish 3.1. Проблема в том, что при успешном входе в систему мне приходится обновлять некоторые данные, связанные с аутентифицированным пользователем. Как выполнить операцию после входа в систему после того, как j_security_check завершит ее выполнение? Спасибо.

Ответ №1:

Обходной путь с помощью Servlet 3.0 (или Java EE 6): вызов HttpServletRequest.login() из управляемого компонента, и если он не выдает исключения, выполните свои операции после входа в систему.

Комментарии:

1. Всегда есть простое решение для всего 🙂 Спасибо!

2. что, если я ограничен только Java EE 5?

Ответ №2:

  1. Создайте фильтр, который сопоставляется с j_security_check

  2. Вам необходимо перезаписать Origin заголовок ответа перед chain.doFilter(request, response); этим фильтром, а также поместить URL-адрес перенаправления после публикации в файл cookie WASReqURL (или файл cookie glassfish, который содержит следующий URL)

  3. Ссылка, которую вы выбрали на шаге 2, должна быть сопоставлена с сервлетом, который выполняет данные после j_security_check, а затем перенаправить обратно на перезаписанную ссылку с шага 2.

Комментарии:

1. 1. Вы действительно можете перехватывать запросы к j_security_check в i Filter? Разве JAAS не должен перехватывать эти запросы и не пропускать их на сервер?

2. да, но этот фильтр будет перед началом проверки подлинности. Следовательно, предполагать что-либо о учетных данных, таких как добавление данных в сеанс, является неправильным подходом.