2015-12-11 3 views
3

Я создал новый маршрут «» комнаты с генератором и смоделировали мой $ stateProvider по маршруту админYeoman Angular Fullstack - как обеспечить маршруты?

.state('admin', { 
    url: '/admin', 
    templateUrl: 'app/admin/admin.html', 
    controller: 'AdminController', 
    controllerAs: 'admin', 
    authenticate: 'admin' 
    }); 

Vs

$stateProvider 
    .state('rooms', { 
    url: '/rooms', 
    templateUrl: 'app/rooms/rooms.html', 
    controller: 'RoomsCtrl', 
    controllerAs: 'rooms', 
    authenticate: 'admin' 
    }); 

Но мой путь еще появляется без аутентификации!

Наверное, мне не хватает нескольких вещей, чтобы сделать его безопасным, хотя я не могу понять, что!

Может ли кто-нибудь помочь?

Благодаря

+0

сверьтесь иметь факторизующее средство перехватчика, определенное и вызванное в вашем app.js – aitnasser

ответ

1

контроллер должен быть как:

 angular.module('auth8App').controller('RoomsCtrl', function ($scope,Auth,$location) { 

       //check if the user is logged-in 
       Auth.isLoggedInAsync(function(loggedIn) { 
         if (!loggedIn) {  
         //if the user is not logged Redirect to login 
          event.preventDefault(); 
          $location.path('/login'); 
         } 
         }); 
        $scope.message = 'Hello'; 
       }); 
+0

Работа!Спасибо – stevejvv

+0

ok, gooood luck – aitnasser

0

проверить, если у вас есть factorie перехватчика службы определена и называется в вашем app.js Ликом это:

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

    $locationProvider.html5Mode(true); 
    $httpProvider.interceptors.push('authInterceptor'); 
    }) 

    .factory('authInterceptor', function ($rootScope, $q, $cookieStore, $location) { 
    return { 
     // Add authorization token to headers 
     request: function (config) { 
     config.headers = config.headers || {}; 
     if ($cookieStore.get('token')) { 
      config.headers.Authorization = 'Bearer ' + $cookieStore.get('token'); 
     } 
     return config; 
     }, 

     // Intercept 401s and redirect you to login 
     responseError: function(response) { 
     if(response.status === 401) { 
      $location.path('/login'); 
      // remove any stale tokens 
      $cookieStore.remove('token'); 
      return $q.reject(response); 
     } 
     else { 
      return $q.reject(response); 
     } 
     } 
    }; 
    }) 

    .run(function ($rootScope, $location, Auth) { 
    // Redirect to login if route requires auth and you're not logged in 
    $rootScope.$on('$stateChangeStart', function (event, next) { 
     Auth.isLoggedInAsync(function(loggedIn) { 
     if (next.authenticate && !loggedIn) { 
      event.preventDefault(); 
      $location.path('/login'); 
     } 
     }); 
    }); 
    }); 
+0

, теперь проверьте, вызвано ли промежуточное ПО аутентификации в конечной точке вашего сервера. – aitnasser

+0

Эй, спасибо за ваш Ответить. Да у меня есть authIntereptor [plunker] (http://plnkr.co/nj5huWB1i5it7BIjfymL) ... – stevejvv

+0

теперь проверяет, является ли промежуточным программным обеспечением аутентификации называется в серверной конечной точке – aitnasser

Смежные вопросы