Ionic app限制用户在登录应用程序后退回,直到用户退出为止

时间:2015-06-23 12:02:23

标签: angularjs cordova ionic-framework

您好我从Cordova和AngularJS开发了一种离子应用。我在这里遇到的问题是当用户打开应用程序并执行登录时,用户导航到仪表板。这里一旦用户导航,直到用户点击Logout选项或清除缓存,他/她就不应该返回登录页面。

但在我的情况下,当用户登录并点击设备的后退按钮时,它将再次返回登录页面,用户必须再次登录。如何避免呢?

即使应用程序进入后台,我仍希望维护用户登录状态。

如何实现这一目标?

更新

我尝试过这段代码:

    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();
                }
            })
        }
    });

它执行得很好,但问题是它按下每个后退按钮执行。因此,如果用户在仪表板内导航到菜单,并且单击后退按钮(按自然界面)以co回到不是仪表板页面的上一页,那么即使它被调用。这对于用户体验而言是如此令人尴尬。我已将这段代码添加到仪表板控制器中,而不是其他地方?我只能在dashboard控制器中调用此事件或者是否可以这样做。

2 个答案:

答案 0 :(得分:0)

  

但在我的情况下,当用户登录并点击设备的后退按钮时,它将再次返回登录页面,用户必须再次登录。如何避免呢?

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

  

即使应用程序进入后台,我仍希望维护用户登录状态。

     

如何实现这一目标?

你应该为你的应用程序添加某种缓存,添加$ionicHistory保存到它并在应用程序加载时首先检索/重置它,就像配置时间一样。

答案 1 :(得分:0)

在您的登录状态定义中添加resolve属性,只有在用户未登录时才应解析。如果用户已登录,则拒绝承诺。如果承诺被拒绝,那么单击后退按钮将不起任何作用,因为重定向不会发生:

  .state('login', {
    url: '/login',
    templateUrl: 'login.html',
    controller: 'login.controller as login',
    resolve: {
      path: function($q) {
        if (isUserLoggedIn) {
          $q.reject();
        } else {
          $q.resolve();
        }
      }
    }
  })
  

即使应用程序进入后台,我仍希望维护用户登录状态。

     

如何实现这一目标?

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