2015-05-29 46 views
5

嗨我有一个与离子登录和注销问题。无法从离子登出

每次登出后,我仍然可以点击后退按钮,它会让我回到我的上一页。我可否知道如何在注销时清除或删除会话,以便用户无法从登录返回到上一页?

var default_stat; 
$scope.logout = function(){ 
    $ionicLoading.show({template:'Logging out....'}); 
    $localstorage.set('loggin_state', ''); 
    $state.go('login'); 
    $ionicLoading.hide(); 
    $ionicHistory.clearHistory(); 
    $ionicHistory.clearCache(); 
}; 
登录期间我使用localStorage的指示用户

已经登录

$localstorage.set('loggin_state', '1'); 
+0

我有同样的问题,它不清除缓存或历史。我在文档中读到$ ionicHistory只会清除除当前视图之外的所有其他视图的缓存。我需要回答这个问题。 –

+0

看看这个http://stackoverflow.com/questions/29841166/reset-unload-controller-after-changestate-logout-called-angularjs –

回答

14

我会做这样的事情:

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

}; 

我发现,加入少许延迟允许$ionicHistory清除缓存。

$ionicHistory.nextViewOptions({ disableBack: true, historyRoot: true }); 
  • disableBack:下一个视图应该忘记它的后视图,并将其设置为null。
  • historyRoot:下一个视图应该成为其历史堆栈中的根视图。
2

这是因为ionic是缓存的观点,这样就阻止离子经历的控制器。

所以,你可以胸围缓存如下

<ion-view cache-view="false" view-title="My Title!"> 
    ... 
</ion-view> 

read here for more

4

$ionicHistory.clearCache()现在返回承诺,因此您可以确保清除缓存。所以你可以这样打电话:

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

有没有必要像上述的超时事情。

credit goes to