AngularJS에서 기본 인증 라우팅을 구현하려고합니다. 약속을 반환하는 authorize 메서드가있는 모델이 있습니다. 내가 권한 부여 함수가 true 또는 false를 반환 할 때까지 기다리는 라우팅을 기다리십시오. 완료되면 경로를 다시 시작하거나 사용자를 로그인 페이지로 리디렉션해야합니다.인증 절차가있는 AngularJS 라우팅
나는 내가 라우팅을 중지 호출하는 방법을 다음 다시 시작하거나 로그인 리디렉션 할 필요가 본질적으로 생각합니다. 아래 코드는 내가 지금까지 가지고 있지만 일시 중지/이력서를 수행하는 방법을 잘 모르겠습니다. 어떤 아이디어?
return angular.module('d', ['ngCookies', 'ngRoute'])
.config(['$routeProvider', '$locationProvider', '$httpProvider',
function ($routeProvider, $locationProvider, $httpProvider) {
$routeProvider.when('/',
{
templateUrl: 'views/home.html',
controller: 'HomeCtrl'
});
$routeProvider.when('/login',
{
templateUrl: 'views/login.html',
controller: 'LoginCtrl'
});
$routeProvider.otherwise({ redirectTo: '/404' });
$locationProvider.html5Mode(true);
// handle unauthorized requests by redirecting to login page
$httpProvider.responseInterceptors.push(
['$location', '$q', function ($location, $q) {
function success(response) {
return response;
}
function error(response) {
if (response.status === 401) {
$location.path('/login');
return $q.reject(response);
}
else {
return $q.reject(response);
}
}
return function (promise) {
return promise.then(success, error);
}
}]);
}])
.run(['$rootScope', '$location', 'Auth', function ($rootScope, $location, Auth) {
$rootScope.$on("$routeChangeStart", function (event, next, current) {
$rootScope.error = null;
Auth.authorize().then(function(){
$location.path('/');
},function(){
$location.path('/login');
});
});
}]);
[$ routeProvider resolve] [1] 올바른 접근 방식입니다. [1] : http://stackoverflow.com/questions/18788586/angularjs-handle-routing-before-they-load – amcdnl
당신이 'authorize' 방법을 제공 할 수 – Merlin