web-dev-qa-db-fra.com

Supprimez la page de l'historique pour que "retour" fonctionne correctement

J'ai mon application que vous devez vous connecter pour accéder aux autres pages.

donc la première page est "login" et il vérifie si vous êtes déjà connecté, sinon vous serez redirigé vers l'application de la page principale, sinon il vous montrera la page de connexion.

maintenant, le problème est lorsque l'utilisateur se trouve dans la zone de la page enregistrée, et qu'il clique en arrière, il accédera à la page "connexion" et sera redirigé vers la page principale, car il est déjà connecté.

Il est donc coincé dans une boucle infinie.

comment puis-je supprimer la page de connexion de l'historique.

comme dans Android "Android supprimer l'activité de la pile d'historique"

21
Tzook Bar Noy

voici la solution!

utilisez simplement:

  $ionicHistory.nextViewOptions({
     disableBack: true
  });

exemple pour la fonction de connexion:

$scope.login = function () {

Security.login($scope.cred.email, $scope.cred.password)
    .success(function(data) {
        Security.setUser(data.data[0]);
        $ionicHistory.nextViewOptions({
            disableBack: true
        });
        $state.go('posts', {}, {location: "replace", reload: true});
    }).error(function(data) {
        $scope.showAlert();
    });
};
34
Tzook Bar Noy

Pour un moyen pur AngularJS d'accomplir cela (plutôt que ionic ou javascript dans les autres réponses), utilisez la méthode replace () du service $ location ( documentation ):

Utilisez $location.url('/newpath'); ou $location.path('/newpath'); comme vous le feriez normalement pour la redirection angulaire. Et puis ajoutez simplement $location.replace(); juste après. Ou vous pouvez enchaîner les commandes comme ceci:

$location.url('/newpath').replace();
22
Rebecca

Recherche rapide: https://stackoverflow.com/a/8969975/185672

Première réponse:

Au lieu d'utiliser window.location = url; Pour rediriger,

essayez window.location.replace(url);.

après avoir utilisé replace (), la page actuelle ne sera pas enregistrée dans l'historique de session, ce qui signifie que l'utilisateur ne pourra pas utiliser le bouton Retour pour y accéder.

3
Phil