0

異なる 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 = {} を再度初期化しますが、もちろん空です。

私はここにいたいので、親切にしてください

前もって感謝します

4

1 に答える 1