我开发了一个angularjs应用程序,并且我有一个 REST API 用于从我的 AngularJS 应用程序中获取应用程序资源。当用户自己登录时,我将他的访问令牌保存在 cookie 中。如果他刷新页面,我想从令牌中获取用户信息,例如:
mymodule.run(function ($rootScope, $cookies, AuthService, Restangular) {
if ($cookies.usertoken) {
// call GET api/account/
Restangular.one('account', '').get().then( function(user) {
AuthService.setCurrentUser(user);
});
}
});
认证服务:
mymodule.factory('AuthService', function($http, $rootScope) {
var currentUser = null;
return {
setCurrentUser: function(user) {
currentUser = user;
},
getCurrentUser: function() {
return currentUser;
}
};
});
但是如果用户访问需要用户变量的控制器:
mymodule.controller('DashboardCtrl', function (AuthService) {
var user = AuthService.getCurrentUser();
});
控制器代码是在 API 调用结束之前执行的,所以我有一个空变量。在启动控制器之前等待用户数据加载是否有一个好的解决方案?
我找到了这个链接,但我正在寻找一种更全局的方法来初始化应用程序上下文。