#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:
-
Создайте фильтр, который сопоставляется с
j_security_check
-
Вам необходимо перезаписать
Origin
заголовок ответа передchain.doFilter(request, response);
этим фильтром, а также поместить URL-адрес перенаправления после публикации в файл cookieWASReqURL
(или файл cookie glassfish, который содержит следующий URL) -
Ссылка, которую вы выбрали на шаге 2, должна быть сопоставлена с сервлетом, который выполняет данные после j_security_check, а затем перенаправить обратно на перезаписанную ссылку с шага 2.
Комментарии:
1. 1. Вы действительно можете перехватывать запросы к j_security_check в i Filter? Разве JAAS не должен перехватывать эти запросы и не пропускать их на сервер?
2. да, но этот фильтр будет перед началом проверки подлинности. Следовательно, предполагать что-либо о учетных данных, таких как добавление данных в сеанс, является неправильным подходом.