2016-03-29 8 views
0

Nehmen Sie den folgenden Code. Ich habe einen Cookie, der erstellt wird, sobald sich ein Benutzer erfolgreich angemeldet hat. Meine API ist ebenfalls bereits authentifiziert. Was ich tun möchte, ist eine einfache Überprüfung des Cookies vor dem Auflegen einer Route, mit der einzigen Ausnahme der Login-Route.Route abfangen und zum Login umleiten

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

Mögliche Duplikat folgenden sein [Umleiten auf eine bestimmte Route basierend auf Bedingung] (http://stackoverflow.com/questions/11541695/redirecting-to-a-certain -route-based-on-condition) –

Antwort

0

konnte wie

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

Dies funktioniert die meiste Zeit, aber manchmal lädt die Route noch. – CodeMilian

+0

Ich habe vorerst einen Hack gemacht, während ich weiter an einem saubereren Weg arbeite, aber vielen Dank. setTimeout (function() { window.location = ("/ # login"); }, 1); setTimeout (function() { window.location = ("/ # login"); }, 50); setTimeout (function() { window.location = ("/ # login"); }, 100); setTimeout (function() { window.location = ("/ # Login"); }, 250); Ich werde dies als eine Antwort kennzeichnen. Das andere Problem dabei ist, dass ein flackert ein bisschen. – CodeMilian

Verwandte Themen