J'essaie d'implémenter la déconnexion correcte pour mon application Java EE/JSF2.Accédez à l'URL externe à partir d'un bean backing?
Il faut deux choses:
- je dois déconnecter de JAA et invalider la session
- Je puis de naviguer vers une URL externe au feu SiteMinder fermeture de session
Le SiteMinder fermeture de session L'URL (configurée sur le serveur Policy -> Je ne peux pas le changer) est en dehors de mon contexte d'applications. Par exemple. Si l'URL de mon application Web est https://localhost:8080/sm/MyWebApp, l'URL de déconnexion est https://localhost:8080/anotherwebapp/logout.html.
Voici le code local actuel logout:
public void logout() {
System.out.println("Logging out...");
HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
try {
request.logout();
} catch (ServletException e) {
e.printStackTrace();
}
HttpSession session = (HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false);
if (session != null) {
session.invalidate();
}
}
Et voici la propriété qui produit l'URL logout:
public String getLogoutUrl() {
HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
String requestServer = request.getServerName();
String requestScheme = request.getScheme();
int serverPort = request.getServerPort();
String logoutUrl = requestScheme + "://" + requestServer + ":" + Integer.toString(serverPort) + "/anotherwebapp/logout.html";
return logoutUrl;
}
Cependant, je ne peux pas trouver un composant JSF2/Primefaces qui peut appeler déconnectez-vous() puis ouvrez l'URL externe. Par exemple, si j'ai:
<h:outputLink value="#{authBean.logoutUrl}" onclick="#{authBean.logout()}">[Logout]</h:outputLink>
alors onclick ne semble pas être appelé. Une autre façon que j'ai essayé était de mettre l'URL externe à la fin de la fonction de déconnexion pour qu'elle soit retournée comme une chaîne de navigation mais elle n'est pas reconnue (également essayée avec "? Faces-redirect = true" ...).
Toute aide serait appréciée.
Merci beaucoup! Refresh-redirect a résolu mon problème! – egbokul