1

更新後に $cookieStore が Cookie 値を保持することに問題があります。Cookie を処理する UserService の 2 つのメソッドを次に示します。

var getCurrentUser = function () {
    return $cookieStore.get('currentUser');
};

var updateCurrentUser = function () {
    return $http.get(baseUrl + 'api/session').then(function (response) {
        $cookieStore.put('currentUser', response.data);
        $rootScope.$broadcast('currentUser', response.data);
    }, function (response) {
        $cookieStore.remove('currentUser');
        $rootScope.$broadcast('currentUser', null);
    });
};

アプリ全体で、現在のユーザーのメタ データに影響を与えるアクションが実行された後、UserService.updateCurrentUser()サーバーから最新のユーザー データを取得し、その Cookie を更新する を呼び出します。次に、ユーザー データを表示する場所に、その特定のコントローラーでユーザー モデルを更新する次のコードがあります。

$scope.$on('currentUser', function (event, data) {
    $scope.user = data;
});

コードをステップ実行すると、すべてが正しく機能しているように見えます。ラインが実行された後$cookieStore.put('currentUser', response.data); 、更新された値は をチェックすることで確認できます$cookieStore.get('currentUser')。しかし、ブラウザ ツールを使用して実際の Cookie を確認すると、Cookie の値が更新されていません。新しいデータを表示するためにブラウザー ツールを更新する必要があるかどうかはわかりません。しかし、ページを更新すると、更新された Cookie 値もどこにも表示されません。何が起こっている?

前もって感謝します。

4

1 に答える 1

5

$cookieサービスを使用して Cookie を追加するドキュメントを確認してください。

put(key, value, [options]);

3 番目の引数では、追加のオプションを使用できます。

  • パス (文字列)
  • ドメイン (文字列)
  • 有効期限(日付)
  • セキュア (ブール値)

「expires」を設定して、Cookie の有効期限が切れるタイミングを定義する必要があります。そうしないと、サイトを更新するか、サイトを離れたときに Cookie の有効期限が切れます。

$cookies.put("id", 1, {
    expires: new Date(2016, 1, 1)
});

また、このサービスは と呼ばれるようになり$cookiesました。Angular 1.4 以降、有効期限を設定できるようになりました。それまではありえませんでした。

http://docs.angularjs.org/api/ngCookies/service/$cookies

于 2015-05-11T15:04:51.190 に答える