4

我最近从 angular 1.2(原始代码)升级到 1.3(破坏了 cookie)到今天的 1.4($cookieStore 现在不推荐使用 $cookies)

我添加了一行$cookies.putObject('user', user);,但它没有保存到 cookie(我在 chrome 资源选项卡中验证)

        /**
         * Authenticate user
         *
         * @param  {Object}   user     - login info
         * @param  {Function} callback - optional
         * @return {Promise}
         */
        login: function (user, callback) {
            var cb = callback || angular.noop;

            return Session.save({
                email: user.email,
                password: user.password
            }, function (user) {
                $rootScope.currentUser = user;
                $cookies.putObject('user', user); //does not save

                return cb();
            }, function (err) {
                return cb(err);
            }).$promise;
        },

当我在 chrome 控制台中尝试时,我$cookies.putObject在之后放置了一个断点。undefined$cookies.getObject('user')

这是一个问题,因为现在每当我刷新页面时,我都会失去登录用户。该Auth.js服务在前面有这条线:

    // Get currentUser from cookie
    $rootScope.currentUser = $cookies.getObject('user') || null;
4

1 回答 1

2

我注意到 angular 在控制台中发出警告......我错过了。我的对象超过了 4093 的 cookie 大小限制。我的是 4207。

所以我所做的就是将 cookie 保存userId到 cookie 中……这允许我对登录用户的所有检查工作,并更新代码以从服务器获取登录的用户对象。

我最初将用户对象放入其中,localStorage但这变成了管理的噩梦——每当更新用户时(可能发生在应用程序的多个位置)......我必须刷新localStorage.

相反,我在每次页面刷新时都这样做:

    // Get currentUser from cookie
    $rootScope.currentUser = $cookies.get('userId');

    User.get().$promise
        .then(function(user){
            $rootScope.currentUser = user._id && user || null;
        });
于 2015-07-26T06:49:50.863 回答