2016-04-15 154 views
5

嗨,我是新的離子框架。我在離子中使用會話管理器。但我想跳過登錄頁面,如果用戶已經登錄。如何跳過登錄頁面,如果用戶已經登錄在離子

app.js

angular.module('grocery', ['ionic', 'grocery.controller', 'ngCordova', 'ngCordovaOauth']) 

.run(function($ionicPlatform, $cordovaSQLite, $cordovaToast, $rootScope, mainItemsList, $state) { 
    $ionicPlatform.ready(function() { 
     if (window.cordova && window.cordova.plugins.Keyboard) { 

      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); 

      stops the viewport 
      // from snapping when text inputs are focused. Ionic handles this internally for 
      // a much nicer keyboard experience. 
      cordova.plugins.Keyboard.disableScroll(true); 
     } 
     if (window.StatusBar) { 
      StatusBar.styleDefault(); 
     } 

    }); 


}); 


$rootScope.$on('$locationChangeStart', function(event, newUrl, oldUrl) { 
    if (mainItemsList.isLoggedIn() != true) { 
     $state.go('app.login'); 
    } 



}) 


.config(function($stateProvider, $urlRouterProvider) { 

    $stateProvider 
     .state('app', { 
      url: "/app", 
      abstract: true, 
      templateUrl: "templates/navigationDrawer.html", 
      controller: 'AppCtrl' 
     }) 

    .state('app.masterList', { 
     url: "/masterList", 
     views: { 
      'menuContent': { 
       templateUrl: "templates/masterList.html", 
       controller: 'indexCtrl' 
      } 
     } 
    }) 


    .state('app.login', { 
     url: "/login", 
     views: { 
      'menuContent': { 
       templateUrl: "templates/login.html", 
       controller: 'loginCtrl' 
      } 
     } 
    }) 

    .state('app.register', { 
     url: "/register", 
     views: { 
      'menuContent': { 
       templateUrl: "templates/register.html", 
       controller: 'registerCtrl' 
      } 
     } 
    }) 


    $urlRouterProvider.otherwise("/app/masterList"); 


}); 


angular.module('grocery.services', []) 
    .factory('mainItemsList', function($cordovaSQLite, $cordovaToast, $cordovaPreferences) { 
     return { 
      isLoggedIn: function(sessionEmail) { 

       $cordovaPreferences.store('email', sessionEmail).success(function(value) { 
         //$cordovaToast.showShortTop('stored'); 
        }) 
        .error(function(error) { 
         $cordovaToast.showShortTop("Error " + error); 
        }) 


       return true; 
      } 


     } 
    }) 

我試圖現有計算器的答案。但不工作。請幫助我,我錯了。

+0

我想在'app.login'狀態中使用'resolve'屬性將會訣竅 – Yogesh

回答

0

創建一個新的控制器和一個名爲autologin的新狀態。使其成爲默認狀態。在autologin控制器中,檢查用戶是否已經登錄。如果他是,重定向到某個頁面。如果他不是,則重定向到登錄。

.state('app.autologin', { 
    url: "/autologin", 
    controller: 'autologinCtrl' 
    }) 

$urlRouterProvider.otherwise("/app/autologin"); 

控制器:

angular.module('grocery').controller('autologinCtrl, function($scope, $state){ 
    //check if user is logged in 
    if (userLoggedIn){ 
     state.go('app.masterList'); 
    } else { 
     state.go('app.login'); 
    } 
}); 
+0

感謝您的快速響應。但它不起作用。 –

+0

您還需要擺脫$ rootScope。$ on('$ locationChangeStart'...因爲它會干擾 – fikkatra

+0

謝謝,但仍然無法正常工作。 –

0

如果您是這樣的邏輯添加新controller,有將是pages.So之間忽隱忽現處理這個機會利用$urlRouterProvider

.config(function($stateProvider, $urlRouterProvider, mainItemsList) { 
    $stateProvider 
     .state('app', { 
      url: "/app", 
      abstract: true, 
      templateUrl: "templates/navigationDrawer.html", 
      controller: 'AppCtrl' 
     }) 

    .state('app.masterList', { 
      url: "/masterList", 
      views: { 
       'menuContent': { 
        templateUrl: "templates/masterList.html", 
        controller: 'indexCtrl' 
       } 
      } 
     }) 
     .state('app.login', { 
      url: "/login", 
      views: { 
       'menuContent': { 
        templateUrl: "templates/login.html", 
        controller: 'loginCtrl' 
       } 
      } 
     }) 

    .state('app.register', { 
     url: "/register", 
     views: { 
      'menuContent': { 
       templateUrl: "templates/register.html", 
       controller: 'registerCtrl' 
      } 
     } 
    }); 
    // if none of the above states are matched, use this as the fallback 
    $urlRouterProvider.otherwise(function() { 
     var logged = mainItemsList.isLoggedIn(); 
     // Check User logined or not 
     if (logged != true) { 
      return 'app.login'; 
     } else { 
      return 'app.masterList'; 
     } 

    }); 


}); 
相關問題