2016-03-29 209 views
0

請執行以下代碼。我有一個用戶成功登錄後創建的cookie。我的API也已通過身份驗證。我想要做的是在提供路由之前對cookie進行簡單檢查,唯一例外的是登錄路由。攔截路由並重定向登錄

angular 
    .module('pizzaGiants.routes', ['ui.router']) 
    .config(['$stateProvider', '$locationProvider', '$urlRouterProvider', 

     function ($stateProvider, $locationProvider, $urlRouterProvider) { 
      $urlRouterProvider.otherwise('/login'); 

      // Application Routes 
      // ----------------------------------- 
      // add check if cookie exists else redirect to login 
      $stateProvider 
       .state('login', { 
        url: '/login', 
        templateUrl: 'features/login/login.html', 
        controller: 'loginCtrl' 
       }) 
       .state('attributes', { 
        url: '/attributes', 
        templateUrl: 'features/attributes/attributes.html', 
        controller: 'attributesCtrl' 
       }) 
       .state('users', { 
        url: '/users', 
        templateUrl: 'features/users/users.html', 
        controller: 'usersCtrl' 
       }) 
       .state('signup', { 
        url: '/signup', 
        templateUrl: 'features/signup/signup.html', 
        controller: 'signupCtrl' 
       }) 
       .state('roles', { 
        url: '/roles', 
        templateUrl: 'features/roles/roles.html', 
        controller: 'rolesCtrl' 
       }) 
       .state("fruits", {url: "/fruits",templateUrl: "features/fruits/fruit.html",controller: "fruitCtrl"}).state("colors", {url: "/colors",templateUrl: "features/colors/color.html",controller: "colorCtrl"}).state("contacts", {url: "/contacts",templateUrl: "features/contacts/contact.html",controller: "contactCtrl"}) 

}]); 
+0

[重定向到一定路線基於條件]的可能的複製(http://stackoverflow.com/questions/11541695/redirecting-to-a-certain -route-based-on-condition) –

回答

0

也能像以下

app.run([ 
'$rootScope','$location', '$timeout', 
    function ($rootScope, $location, $timeout) { 
     $rootScope.$on('$stateChangeStart', function() { 
      if (// your condition logic) { 
        $timeout(function() { 
         $location.path("/login"); 
        }, 1); 
      } 
     }); 
    } 
]); 
+0

這項工作大部分時間都適用,但有時路線仍然會加載。 – CodeMilian

+0

當我繼續以更簡潔的方式工作時,我結束了現在的黑客攻擊,但非常感謝。 ()函數(){ window.location =(「/#login」); },1); ()函數(){ window.location =(「/#login」); },50); ()函數(){ window.location =(「/#login」); },100); setTimeout(function(){ window.location =(「/#login」); },250); 我會將此標記爲答案。另外一個問題是閃爍一下。 – CodeMilian