我已经使用angular开发了一个应用程序,但是当我使用grunt构建分发应用程序时,我的应用程序有一种奇怪的行为。 例如:
console.log("START");
AuthService.refresh(LoopBackAuth.accessTokenId).then(function() {
console.log("USER LOADED");
$state.go('main.documents');
});
在main.documents中我有:
console.log("DOCUMENTS");
所以流程应该是(我在生产文件中的流程):
log-->START
log-->USER LOADED
log-->DOCUMENTS
但是我在生产文件中获得的流程如下:
log-->START
log-->DOCUMENTS
log-->USER LOADED
并在我的文档中查看我的$ rootScope,在那里我保存了我的用户详细信息,它是空的,并且一直都会失败。
.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
$stateProvider.state('login', {
url: '/login',
templateUrl: 'views/login.html',
controller: 'LoginCtrl',
authenticate: false
});
$stateProvider.state('main', {
abstract: true,
url: '/',
templateUrl: 'views/main.html',
controller: 'MainCtrl',
authenticate: true
});
$stateProvider.state('main.documents', {
url: 'documents',
templateUrl: 'views/main/documents.html',
controller: 'MainDocumentsCtrl',
authenticate: true
});
$stateProvider.state('main.information', {
url: 'information',
templateUrl: 'views/main/managing-information.html',
controller: 'MainInformationCtrl',
authenticate: true
});
$stateProvider.state('main.calendar', {
url: 'calendar',
templateUrl: 'views/main/calendar.html',
controller: 'MainCalendarCtrl',
authenticate: true
});
$stateProvider.state('main.notices', {
url: 'notices',
templateUrl: 'views/main/notices.html',
controller: 'MainNoticesCtrl',
authenticate: true
});
$stateProvider.state('main.settings', {
url: 'settings',
templateUrl: 'views/main/settings.html',
controller: 'MainSettingsCtrl',
authenticate: true
});
$urlRouterProvider.otherwise('login');
}])
用户身份验证:
.run(['$rootScope', '$state', 'LoopBackAuth', 'Authentication', function($rootScope, $state, LoopBackAuth, AuthService) {
$rootScope.$on('$stateChangeStart', function(event, toState, toParams) {
// redirect to login page if not logged in
if (toState.authenticate && !LoopBackAuth.accessTokenId) {
event.preventDefault();
$rootScope.returnTo = {
state: toState,
params: toParams
};
$state.go('login');
}
});
// Get data from localstorage after pagerefresh
// and load user data into rootscope.
if (LoopBackAuth.accessTokenId && !$rootScope.currentUser) {
console.log("USER LOGGED IN");
AuthService.refresh(LoopBackAuth.accessTokenId).then(function() {
console.log("USER LOADED");
$state.go('main.documents');
});
}
}]);