куки удаляются при обновлении страницы

0

Я разрабатываю веб-сайт с помощью angularjs и nodeJS, моя проблема в том, что когда хранится объект в cookie, этот объект все еще будет находиться в файле cookie, пока я не перезагружу страницу, и это мой код

.service("Auth", function ($cookies, $rootScope) {
        var currentUser = null;
        return {
            set: function (data) {
                currentUser = data;
                $cookies.putObject("user", data, {
                    secure: true,
                    expires: (new Date(new Date().setMinutes(new Date().getMinutes() + 30))).toString()
                });
                $rootScope.currentUser = currentUser;

            }
            ,
            get: function () {
                return currentUser;
            }
            ,
            isLoggedIn: function () {
                if (currentUser) {
                    return true;
                } else {
                    return false;
                }
            }
            ,
            logOut: function () {
                $cookies.remove('user');
                // currentUser = null;
                $rootScope.currentUser = null;
            }
        }
    }
)
Теги:
cookies

1 ответ

2

Куки файлы не стирают эту локальную переменную currentUser, которая исчезает. Когда вы обновите страницу, все объекты, которые вы сохранили в памяти, исчезнут, и служба Auth будет восстановлена. Вам необходимо правильно заново инициализировать себя из файлов cookie и снова установить currentUser. Что-то вроде этого:

.service("Auth", function ($cookies) {
    // re-read the user from the $cookies
    var currentUser = $cookies.getObject("user") || null;
    return {
        set: function (data) {
            currentUser = data;
            $cookies.putObject("user", data, {
                secure: true,
                expires: (new Date(new Date().getTime() + 30 * 60 * 1000).toString()
            });
        }
        ,
        get: function () {
            return currentUser;
        }
        ,
        isLoggedIn: function () {
            if (currentUser) {
                return true;
            } else {
                return false;
            }
        }
        ,
        logOut: function () {
            $cookies.remove('user');
            currentUser = null;
        }
    }
})

Лично я думаю, что было бы лучше поговорить с вашим сервером и вернуть его пользователю. Куки будут отправляться на сервер, но это дает вашему серверу возможность проверить аутентифицированного пользователя. Он обеспечивает гораздо лучшую защиту от того, что кто-то крадет куки, истекает срок их действия и т.д.

И прекратите хранить currentUser на $ rootScope. Просто сохраните его в своей локальной переменной, и если кто-то захочет использовать currentUser, он может ввести службу Auth.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню