Angularjs Ionic应用程序限制用户在登录应用程序后向后移动,直到用户注销

Angularjs Ionic应用程序限制用户在登录应用程序后向后移动,直到用户注销,angularjs,cordova,ionic-framework,Angularjs,Cordova,Ionic Framework,嗨,我从Cordova和AngularJS开发了一个离子应用程序。我在这里面临的问题是,当用户打开应用程序并登录时,用户会导航到仪表板。在这里,一旦用户导航,直到用户单击注销选项或清除缓存,他/她不应该返回登录页面 但在我的例子中,当用户登录并单击设备的后退按钮时,它将再次返回到登录页面,用户必须再次登录。如何避免呢 我想保持用户登录状态,即使在应用程序进入后台 如何做到这一点 更新 我试过这段代码: controller('Dashboard', function ($scope, $

嗨,我从Cordova和AngularJS开发了一个离子应用程序。我在这里面临的问题是,当用户打开应用程序并登录时,用户会导航到仪表板。在这里,一旦用户导航,直到用户单击注销选项或清除缓存,他/她不应该返回登录页面

但在我的例子中,当用户登录并单击设备的后退按钮时,它将再次返回到登录页面,用户必须再次登录。如何避免呢

我想保持用户登录状态,即使在应用程序进入后台

如何做到这一点

更新

我试过这段代码:

    controller('Dashboard', function ($scope, $http, $ionicPopup, $timeout, $state, $rootScope, $interval, $sce, $ionicPlatform) {
        $ionicPlatform.onHardwareBackButton(function () {
        if (true) { // your check here
            $ionicPopup.confirm({
                title: 'Exit from App!',
                template: 'are you sure you want to exit?'
            }).then(function (res) {
                if (res) {
                    navigator.app.exitApp();
                }
            })
        }
    });
这是执行良好,但问题是它执行的每一个后退按钮,我按下。因此,如果用户在仪表板内部导航到菜单,然后单击“后退”按钮(本质上)返回到上一页,而该页不是仪表板页,此时甚至会调用它。这对于用户体验来说太尴尬了。我已经在dashboard controller中添加了这段代码,而不是其他地方?我必须做什么才能仅在
仪表板中调用此事件
控制器,或者是否可以这样做

但在我的例子中,当用户登录并单击设备的后退按钮时,它将再次返回到登录页面,用户必须再次登录。如何避免呢

我认为您应该听一下Cordova中描述的
backbutton
事件。在此侦听器中,添加一些代码以避免返回登录页面

我想保持用户登录状态,即使在应用程序进入后台

如何做到这一点

您应该向应用程序中添加某种缓存,添加并保存
$IonichStory
,然后在应用程序加载时首先检索/重置它,比如在配置时间

但在我的例子中,当用户登录并单击设备的后退按钮时,它将再次返回到登录页面,用户必须再次登录。如何避免呢

我认为您应该听一下Cordova中描述的
backbutton
事件。在此侦听器中,添加一些代码以避免返回登录页面

我想保持用户登录状态,即使在应用程序进入后台

如何做到这一点


您应该向应用程序添加某种缓存,添加并保存
$IonichStory
,然后在应用程序加载时首先检索/重置它,如在配置时间。

向您的登录状态定义添加
resolve
属性,并且仅当用户未登录时才应解析该属性。如果用户登录,则拒绝承诺。如果承诺被拒绝,则单击“上一步”按钮不会产生任何效果,因为重定向不会发生:

  .state('login', {
    url: '/login',
    templateUrl: 'login.html',
    controller: 'login.controller as login',
    resolve: {
      path: function($q) {
        if (isUserLoggedIn) {
          $q.reject();
        } else {
          $q.resolve();
        }
      }
    }
  })
我想保持用户登录状态,即使在应用程序进入后台

如何做到这一点


为了保持登录状态,请使用持久机制。最简单的方法是使用
本地存储
模块,该模块使用本地存储

解析
属性添加到您的登录状态定义中,并且仅当用户未登录时才解析。如果用户登录,则拒绝承诺。如果承诺被拒绝,则单击“上一步”按钮不会产生任何效果,因为重定向不会发生:

  .state('login', {
    url: '/login',
    templateUrl: 'login.html',
    controller: 'login.controller as login',
    resolve: {
      path: function($q) {
        if (isUserLoggedIn) {
          $q.reject();
        } else {
          $q.resolve();
        }
      }
    }
  })
我想保持用户登录状态,即使在应用程序进入后台

如何做到这一点

为了保持登录状态,请使用持久机制。最简单的方法是使用
角度本地存储
模块,该模块采用本地存储