Сериализация angularjs объектов не работает? - PullRequest
0 голосов
/ 09 июня 2019

У меня проблема с AngularJS; Я захожу в форму, поэтому хочу сохранить данные ответов для сохранения сеанса пользователя: когда я открываю другую вкладку, тот же пользователь должен войти в систему.

Это моя функция loginController:

 function doLoginFn() {
                /*console.log("doLoginFn");
                var requiresLogin = $state.jwtToken;
                console.log("requireLogin: " + requiresLogin);*/
                console.log("authRequest: " + ctrl.authRequest);
                AuthFactory.sendLogin(ctrl.authRequest, successCB, errorCB);

            function successCB(response) {
                let authInfo = response.data;
                let header = response.headers();
                authInfo.jwtToken = header['authorization'];

                console.log("authInfo", authInfo);

                // AuthFactory.user.username = authInfo.username;
                // AuthFactory.user.role = authInfo.role;
                let debugJWT = true;
                //if (debugJWT) {
                if (true) {
                    console.log(authInfo);
                    console.log("username: " + authInfo.username);
                    console.log("roles: " + JSON.stringify(authInfo.authorities.authority));
                    console.log("jwtToken: " + authInfo.jwtToken);
                    console.log("userType: " + authInfo.userRole);
                    console.log("ended.");
                }

                localStorage.setItem("response",JSON.stringify(response));

                AuthFactory.setJWTAuthInfo(authInfo);


                $state.go("dashboard.home");
            }

и это метод authFactory:

        function setJWTAuthInfoFn(authInfo) {
            $sessionStorage.put('authInfo', authInfo);
            authManager.authenticate();


            authInfo.authorities.forEach(function (a) {
                AclService.attachRole(a.authority);

            })

        }

Итак, я попытался сохранить в локальном хранилище ответ, чтобы получить все данные. Когда я загружаю контроллер, я пытаюсь сделать это:

        let response = localStorage.getItem("response");


        if(response !== null && response !== undefined){
            console.log("response" + response);
            console.log("response " + JSON.stringify(response));
            let authInfo = response.data;
            console.log("authInfo " + JSON.stringify(authInfo));
            let debugJWT = true;
            AuthFactory.retrieveJWTAuthInfo(authInfo);
            $state.go("dashboard.home");
        }

В консоли я вижу значение ответа следующим образом:

ответ {"данные": {"имя пользователя": "администратор", "полномочия": [{"полномочия": "ROLE_ADMIN"} и т. Д.

но я получаю:

authInfo undefined

Как я могу сохранить все поля объекта в AngularJS? Потому что после authFactory у меня слишком много подфункций, которые используют подполя моего объекта, поэтому слишком долго приходится вручную сохранять все данные ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...