问题
Hi I have an issue with ionic login and logout.
Each time after logout, i can still click the back button and it will bring me back to my previous page. may i know how to clear or delete session when logout so that user unable to go back to previous page from the login?
var default_stat;
$scope.logout = function(){
$ionicLoading.show({template:'Logging out....'});
$localstorage.set('loggin_state', '');
$state.go('login');
$ionicLoading.hide();
$ionicHistory.clearHistory();
$ionicHistory.clearCache();
};
during login i use localstorage to indicate user has logged in
$localstorage.set('loggin_state', '1');
回答1:
I would do something like this:
$scope.logout = function(){
$ionicLoading.show({template:'Logging out....'});
$localstorage.set('loggin_state', '');
$timeout(function () {
$ionicLoading.hide();
$ionicHistory.clearCache();
$ionicHistory.clearHistory();
$ionicHistory.nextViewOptions({ disableBack: true, historyRoot: true });
$state.go('login');
}, 30);
};
I've found out that adding a little delay allow $ionicHistory
to clear the cache.
$ionicHistory.nextViewOptions({ disableBack: true, historyRoot: true });
- disableBack: The next view should forget its back view, and set it to null.
- historyRoot: The next view should become the root view in its history stack.
回答2:
$ionicHistory.clearCache()
now returns promise so you can ensure cache is cleared. So you can call like this:
$ionicHistory.clearCache().then(function() {
//now you can clear history or goto another state if you need
$ionicHistory.clearHistory();
$ionicHistory.nextViewOptions({ disableBack: true, historyRoot: true });
$state.go('login');
})
There is no need for the above timeout like things.
credit goes to
回答3:
This is because ionic
is caching the view, So that will stop ionic going through the controller.
So you could bust the cache as follows
<ion-view cache-view="false" view-title="My Title!">
...
</ion-view>
read here for more
来源:https://stackoverflow.com/questions/30520030/cant-logout-from-ionic