我希望在不同的 Angular 控制器之间维护用户状态。我正在使用 JWT 进行身份验证,并且可以使用它从每个控制器上的服务器安全地返回用户属性,但每次我进行控制器切换时这是一个完整的循环。
所以我在我的 UserFactory 中添加了以下方法:
function getLocalUser() {
var localUser = {};
return {
isSet:isSet,
get:get,
set:set
};
function isSet(){
return (Object.keys(localUser).length > 0)
};
function get() {
return localUser
};
function set(U){
Object.keys(U).forEach(function (c,i,a){
localUser[c] = U[c];
})
}
}
UserController 这样登录:
function login(username, password) {
UserFactory.login( username, password).then(function success(response) {
$scope.vm.loggedInUser = response.data.user;
$scope.vm.username = null;
$scope.vm.password = null;
UserFactory.getLocalUser().set($scope.vm.loggedInUser);
},handleError);
}
这显然有效,但是当我移动到下一个控制器时:
$scope.vm = {};
// initialize
if (UserFactory.getLocalUser().isSet) {
$scope.vm.loggedInUser = UserFactory.getLocalUser().get();
} else {
UserFactory.getUser().then(function success(response) {
$scope.vm.loggedInUser = response.data;
});
}
呼吁
UserFactory.getLocalUser().isSet
再次初始化 var localUser = {},当然它是空的。
我是一个想要在这里的人,所以要善良
提前致谢