異なる 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 = {} を再度初期化しますが、もちろん空です。
私はここにいたいので、親切にしてください
前もって感謝します