Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

can't logout from ionic

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');
like image 454
davidlee Avatar asked May 29 '15 02:05

davidlee


3 Answers

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.
like image 61
LeftyX Avatar answered Nov 03 '22 13:11

LeftyX


$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

like image 24
Tanweer Avatar answered Nov 03 '22 15:11

Tanweer


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

like image 41
sameera207 Avatar answered Nov 03 '22 14:11

sameera207