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');
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.
$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.
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>
来源:https://stackoverflow.com/questions/30520030/cant-logout-from-ionic