2016-05-25 15 views
0

Ich habe $ rootScope erklärt. $ Auf Funktion unter dem myApp.run Tokenwert in jeder page.but seine nicht working.I authentifiziert zu überprüfen verstehen nicht, warum seine nicht funktioniert. Bitte hilf mir.

app.js

myApp.run(['$rootScope','$state', '$location', 'loginService', function ($rootScope,$state, $location, loginService) { 

    console.log(" under run => "); 
    $rootScope.$on('routeChangeStart', function (event, next, current) { 
     /*If route is authenticated then check if the user has access token, else return to login screen*/ 

     console.log(event); 

     if (next.$$route.authenticated) { 

      var userAuth = loginService.getUserToken(); 
      console.log(" usertoken => " +userAuth); 
      if (!userAuth) { 
       $location.path("/"); 
      } 
     } 

    }); 
}]); 

Code Druck auf Konsole "unter run =>" aber es druckt nicht Ereignis Objekt und auch nicht, wenn die Bedingung überprüfen.

Antwort

2

Seien Pflege der $:

$rootScope.$on('$stateChangeStart',...) 
+0

Ich denke, das nahe ist, aber nur, wenn es ui-Router denken ist es $ routeChangeStart sein sollte, obwohl für ngRoute – shaunhusain

+0

es tnx arbeitet meinen Tag SANE ;-) –

+0

Ich denke, beide die gleiche Art und Weise, überprüfen Sie [diese] (http: //stackoverflow.com/questions/14765719/how-to-watch-for-a-route-change-in-angularjs). –

0
angular.module('...')..config(['$routeProvider', function($routeProvider) {...}])..run(function($rootScope, $location) { 
// register listener to watch route changes 
$rootScope.$on("$routeChangeStart", function(event, next, current) { 
    if ($rootScope.loggedUser == null) { 
    // no logged user, we should be going to #login 
    if (next.templateUrl == "partials/login.html") { 
     // already going to #login, no redirect needed 
    } else { 
     // not going to #login, we should redirect now 
     $location.path("/login"); 
    } 
    }   
}); 

Das einzige, was seltsam scheint, ist, dass ich den Teil des Namens (login.html) testen musste, weil die „nächste“ Route Objekt tat keine URL oder etwas anderes. Vielleicht gibt es einen besseren Weg?

Verwandte Themen