2015-11-26 2 views
1

Я использую Angular-Meteor.Как перенаправить на страницу 404, если пользователь хочет получить доступ к определенной странице, для которой требуется аутентификация входа в угловом метеоре

У меня есть страница, требующая аутентификации пользователя.

например: http://localhost:3000/verifyPhone

Я хочу, чтобы перенаправить пользователя: http://localhost:3000/404 если он не вошел в систему и пытается получить доступ к этой ограниченной страницы.

Вот файл мои маршруты:

app.config(function($stateProvider, $urlRouterProvider, $locationProvider) { 

    $urlRouterProvider.otherwise("/"); 

    $stateProvider 
    .state('verifyPhone', { 
     url: "/verifyPhone", 
     templateUrl: "client/www/views/verifyPhone.html", 
     controller: "SMSVerificationController" 
    }); 

    $locationProvider.html5Mode(true); 
}); 

Как я могу peform Перенаправление здесь?

ответ

1

Вы можете использовать resolve объект, чтобы объявить зависимость к requireUser():

app.config(function($stateProvider, $urlRouterProvider, $locationProvider) { 
    $urlRouterProvider.otherwise("/"); 
    $stateProvider 
    .state('verifyPhone', { 
     url: "/verifyPhone", 
     templateUrl: "client/www/views/verifyPhone.html", 
     controller: "SMSVerificationController", 
     resolve: { 
     "currentUser": function ($meteor) { 
      return $meteor.requireUser(); 
     } 
     } 
    }); 
    $locationProvider.html5Mode(true); 
}); 

После этого, вам нужно, чтобы поймать ошибку requireUser обещание и перенаправить пользователя на страницу 404:

app.run(function ($rootScope, $state) { 
    $rootScope.$on('$stateChangeError', function (event, toState, toParams, fromState, fromParams, error) { 
    if (error === 'AUTH_REQUIRED') $state.go('404'); 
    }); 
});