2016-06-29 3 views
1

Я работаю над проектом Angular, но у меня небольшая проблема, и я буду благодарен за любую помощь, потому что я действительно потерян. В принципе мне нужно проверить, если пользователь вошел в системе, и если он есть, он не должен быть разрешен доступом к определенному виду/маршрута, вот код, я использую для этого:Проверить статус входа в маршрутProvider

'use strict'; 

angular.module('testApp') 
    .config(function ($routeProvider) { 
    $routeProvider 
     .when('/registroVisitante', { 
     template: '<registro-visitante></registro-visitante>', 
     resolve: { 
      "check": function(Auth, $location) { 
      console.log(Auth.isLoggedIn()); 
      if (!Auth.isLoggedIn()) { 
       alert("Access allowed"); 
      } else { 
       $location.path('/'); //redirect user to home. 
       alert("Access denied"); 
      } 
      } 
     } 
     }); 
    }); 

сама проблема заключается в том, что это фактически работает, но только когда я пытаюсь получить доступ к маршруту с помощью якорного щелчка или ng-click или что-то еще, однако, когда я набираю маршрут в адресной строке, он позволяет мне получить доступ, но он не должен, кто-либо есть идея, почему?

+0

Является ли 'Auth' услугой, которая запрашивает исходный код? – pulse0ne

+0

Да, это, первый раз задавая вопрос здесь, поэтому я, вероятно, оставил мало деталей, которые помогут вам, ребята –

+0

Если вы можете опубликовать, что такое служба 'Auth', или, по крайней мере, что делает функция' isLoggedIn', это Будьте очень полезны – pulse0ne

ответ

1

Попробуйте

angular.module('testApp') 
    .config(function ($routeProvider) { 
     $routeProvider 
      .when('/registroVisitante', { 
       template: '<registro-visitante></registro-visitante>', 
       resolve: { 
        "check": function (Auth, $location) { 
         Auth.isLoggedIn(function (response) { 
          console.log(response); 
          if (response) { 
           $location.path('/'); //redirect user to home. 
          } 
         }); 
        } 
       } 
      }); 
    }); 

Проблема заключалась в том, что это асинхронный запрос, и может быть, когда он добрался до если это не определено.

+0

Это сделало это, спасибо! –