无法从 ionic 注销

can't logout from ionic

您好,我遇到了 ionic 登录和注销问题。

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

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

这是因为 ionic 正在缓存视图,所以这将阻止 ionic 通过控制器。

所以你可以像下面这样破坏缓存

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

read here for more

我会这样做:

$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: 下一个视图应该忘记它的背视图,并将其设置为空。
  • historyRoot: 下一个视图应该成为其历史堆栈中的根视图。

$ionicHistory.clearCache() 现在 returns 保证您可以确保清除缓存。所以你可以这样调用:

$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