davidlee
davidlee

Reputation: 6167

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');

Upvotes: 5

Views: 9248

Answers (3)

LeftyX
LeftyX

Reputation: 35587

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.

Upvotes: 14

Tanweer
Tanweer

Reputation: 567

$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

Upvotes: 5

sameera207
sameera207

Reputation: 16629

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

Upvotes: 2

Related Questions