【问题标题】:$cookies.putObject not working in angular 1.4$cookies.putObject 在 Angular 1.4 中不起作用
【发布时间】:2015-10-16 11:53:10
【问题描述】:

我最近从 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;
        },

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

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

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

【问题讨论】:

  • 也许是一个愚蠢的问题,但您已经验证 Session.save 正确地传回用户而不是传回未定义?功能(用户){ $rootScope.currentUser = 用户; $cookies.putObject('user', user); //不保存 return cb(); }
  • 是的。我肯定有一个用户对象。但我想我发现了我的问题......我发现我的对象太大而无法放入 cookie。

标签: angularjs angular-cookies


【解决方案1】:

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

所以我所做的是将 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;
        });

【讨论】:

  • 这是用户服务模块:)
猜你喜欢
  • 2012-12-05
  • 1970-01-01
  • 1970-01-01
  • 2015-12-29
  • 2015-12-05
  • 1970-01-01
  • 1970-01-01
  • 2021-10-12
  • 1970-01-01
相关资源
最近更新 更多