Ситуация : пользователь вынужден сменить пароль при нажатии кнопки «Изменить пароль».Этот щелчок запускает переопределенный метод onSubmit () (Wicket).В этом методе:
protected void onSubmit() {
//changing password by updating it in DB
// autologin user with changed password in system
//set response page (wicket style)
setResponsePage(RestorePasswordPage.class);
}
На самом деле вызов setResponsePage (...) является вызовом Wicket Component.setResponsePage ()
public final <C extends Page> void setResponsePage(final Class<C> cls)
{
getRequestCycle().setResponsePage(cls);
}
Моя задача состояла в том, чтобы заменить калитку на Spring Security иэто было решено - я перехватываю вызов этого метода в Spring Filter Security Chain (класс ниже является одним из компонентов этой цепочки).И может делать все из приведенного выше фрагмента кода, кроме одного - я не знаю, как сделать перенаправление на RestorePasswordPage
public class ForgotPasswordForcePasswordChangeEventHandler implements CustomEventHandler {
public void handle(HttpServletRequest request, HttpServletResponse response) {
// 1. Extract current customer
// 2. Extract changed password
// 3. Updates user through external web service
// 4. Prepares data for authentication
// 5. Clears security context to remove current authentication
//redirect to the same page as in wicket
HOW???
}
}
Вопросы :
- Есть ли способ получить доступ к Wicket RequestCycle, если я получил только запрос HttpServletRequest в качестве ввода.
- Есть ли другой способ решения этой проблемы?