Версия:Invalidate Http сессия в JSF2 на Выходе
Apache 2.1.14 MyFaces
Rich Faces 4.3.5
Издание:
Я хочу аннулировать JSF сеанс, когда пользователь нажимает на Страница выхода. Я решил использовать PreRenderViewEvent
для этого же. Ниже приведена схема для тех же:
Когда отображается страница выхода из системы, вызовите метод слушателя в боковом конце через PreRenderViewEvent
. Недействительный сеанс JSF в java-методе как: FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
Мой вопрос: правильно ли это в аннулировании сеанса? Или есть ли лучший подход?
Код:
<!-- call this in Logout.xhtml page -->
<f:event listener="#{bean.invalidateSession}" type="preRenderView" />
EDIT 1:
Позвольте мне уточнить контекст вопроса. У меня есть два веб-приложения в моей системе. Когда пользователь нажимает кнопку «Выход», он всегда переходит в webApp1. Требование состоит в том, чтобы аннулировать сеанс в webApp1, а затем перенаправить на webApp2, где снова недействителен сеанс. Событие preRenderView будет использоваться при визуализации страницы Webapp1 LogOut. Слушатель будет сессию недействительной и перенаправлять на странице выхода webapp2 как ниже код:
public void logOut(ComponentSystemEvent event) throws IOException{
//logoutAction param will be read from request
String redirectUrl = "/webapp2/Logout.xhtml?action="+logoutAction;
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
FacesContext.getCurrentInstance().getExternalContext().redirect(redirectUrl);
}