Я пытаюсь создать очень простой механизм проверки подлинности с помощью ui-router. Я делаю проверку в бэкэнде, однако, я хочу перенаправить пользователей, если они не вошли в систему.Проверка подлинности пользователя с угловым ui-маршрутизатором
Однако, когда я пытаюсь посетить/профиль, ничего не происходит. Если я console.log() текст вроде «да», он будет выходить из системы неограниченное количество времени, пока я не получу размер стека, превышающий ошибку. Он продолжает указывать URL-адрес/authcheck, я вижу это через сетевые инструменты Chrome.
Если удалить $state.go(toState.name)
, я вижу пустую страницу и console.log()
показывает, что пользователь подписан в (который я), но тогда я не могу видеть /profile
страницу, как и ожидалось.
В чем проблема?
/authcheck
200
или 403
.
мой завод
angular.module('site.profile').factory('Profile', ["$http", function($http) {
return {
authCheck: function() {
return $http.get('/authcheck');
}
};
}]);
UI-маршрутизатор
angular.module('site.profile.routes')
.run(
['$rootScope', 'Profile', '$state', '$stateParams',
function($rootScope, Profile, $state, $stateParams) {
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) {
if (toState.name !== 'auth') {
event.preventDefault();
Profile.authCheck().then(function(returned) {
if (returned.status === 200) {
console.log("yes!");
console.log(toState.name);
//$state.go($state);
} else {
$state.go('auth');
}
});
}
});
}
]
)
.config(
['$stateProvider', '$urlRouterProvider', '$locationProvider',
function($stateProvider, $urlRouterProvider, $locationProvider) {
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
$stateProvider
.state('profile', {
url: '/profile',
views: {
'': {
templateUrl: 'views/profile/profile.html'
},
'[email protected]': {
templateUrl: 'views/post.html'
},
'[email protected]': {
templateUrl: 'views/shared/nav/nav.html'
},
'[email protected]': {
templateUrl: 'views/profile/top.html'
}
}
})
.state('auth', {
url: '/signin',
template: "please sign in"
});
}
]);