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;
        },

の直後にブレークポイントを置き、クロムコンソールで試してみると$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 でした。

だから私がしたことは、代わりにクッキーに保存することでしたuserId...これにより、ログインしているユーザーのすべてのチェックが機能し、サーバーからログインしているユーザーオブジェクトを取得するようにコードを更新できます。

私はもともとユーザーオブジェクトを入れていまし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 に答える