Pages enfant
  • Améliorer le bouton "back" du navigateur

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

Explication du problème

  • l'application crée une session et stocke l'information avant de rediriger vers CAS
  • l'application redirige vers CAS qui demande le mot de passe
  • CAS redirige vers l'application
  • l'utilisateur clique sur le bouton "back"
  • le login CAS se fait sans intervention utilisateur, la page affiche à nouveau l'application. Dans certains cas l'application refuse le ticket qu'il n'attend pas[*]. Et même si cela ne fait pas d'erreur, le "back" n'a rien fait et l'utilisateur se demande bien pourquoi.

Solution

  • sur la mire CAS (formulaire demandant le login & mot de passe), ajouter au <form> :


Bloc de code
languagejs
onsubmit="ignore_on_history_back()"

et dans la page :

Bloc de code
languagejs
function ignore_on_history_back() {
  // on back, do not autolog nor prompt, go back to the app
  try { window.history.replaceState({}, null, location.href.replace('/cas/login', '/cas/authentification-en-cours.html')) } catch (e) {}
}


  • créer une page statique

Bloc de code
languagexml
titleauthentification-en-cours.html
<script>
 var isForward = (history.state || {}).isForward;
 try {
   history.replaceState({ isForward: !isForward }, null, null);
 } catch (e) {}
 history.go(isForward ? 1 : -1);
</script>
Page temporaire d'authentification. Nous vous redirigeons vers la page précédente... 

(cf https://cas.univ-paris1.fr/cas/authentification-en-cours.html)


[*] we have this issue with shibboleth-idp that is configured to delegate to CAS