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"
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();
});
};
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();
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.