2016-04-15 11 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; 
      } 


     } 
    }) 

私は、既存のstackoverflowの答えを試してみました。しかし、働いていない。私が間違っているところで私を助けてください。

+0

を使用してこれを扱う機会があるでしょう私は 'app.login'の状態で '解決'プロパティを使用すると思います。 – Yogesh

答えて

0

新しいコントローラを作成し、autologinという新しい状態を作成します。これをデフォルトの状態にします。 autologinコントローラで、ユーザーが既にログインしているかどうかを確認します。ログインしている場合は、一部のページにリダイレクトします。彼がいない場合は、ログインしてください。

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

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

コントローラ:あなたはこのロジックのための新しいcontrollerを追加する場合

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

$ root($ locationChangeStart ')は、 – fikkatra

+0

にも影響しますが、まだ動作していないので、$ rootScope。$ onを削除する必要があります。 –

0

、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'; 
     } 

    }); 


}); 
関連する問題