81
  1. ブラウザの更新 (F5) で失われないように、ユーザーの認証情報を Cookie に保存したいと考えています。

  2. ユーザーがログオン時に「Remember Me」チェックボックスを選択した場合に備えて、認証情報を「permanent-cookie」に保存します。

4

8 に答える 8

46

ngCookiesこれは、モジュールを使用して angular の 1.4.0 ビルドで可能です。

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

angular.module('cookiesExample', ['ngCookies'])
.controller('ExampleController', ['$cookies', function($cookies) {
  // Find tomorrow's date.
  var expireDate = new Date();
  expireDate.setDate(expireDate.getDate() + 1);
  // Setting a cookie
  $cookies.put('myFavorite', 'oatmeal', {'expires': expireDate});
}]);
于 2015-03-13T13:20:09.537 に答える
32

1.4 の場合: ここのコメントと以下の他のコメントに記載されているように、1.4 の時点で、Angular のネイティブ cookie サポートにより、cookie を編集する機能が提供されるようになりました。

38fbe3ee により、$cookies は現在のブラウザー Cookie 値を表すプロパティを公開しなくなります。$cookies は、Cookie への変更についてブラウザーをポーリングしなくなり、Cookie の値を $cookies オブジェクトにコピーしなくなりました。

これは、ポーリングが高価であり、$cookies プロパティが実際のブラウザーの Cookie 値と正しく同期されないという問題を引き起こしたため、変更されました (ポーリングが最初に追加された理由は、異なるタブ間の通信を可能にすることでしたが、今日これを行うためのより良い方法があります) 、たとえば localStorage など)。

$cookies の新しい API は次のとおりです。

get put getObject putObject getAll remove Cookie データにアクセスするには、上記のメソッドを明示的に使用する必要があります。これは、ブラウザーの Cookie で発生した変更を検出するために $cookies のプロパティを監視できなくなったことも意味します。

通常、この機能は、サード パーティのライブラリが実行時にプログラムで Cookie を変更していた場合にのみ必要です。これに依存する場合は、サードパーティのライブラリに反応して Cookie を変更するコードを記述するか、独自のポーリング メカニズムを実装する必要があります。

実際の実装は、呼び出しを介して渡すことができる$cookiesProviderputオブジェクトを介して行われます。

1.3 以下の場合: jQuery プラグインをロードする必要を回避するために最善を尽くした場合、これは angular の優れた代替品と思われます - https://github.com/ivpusic/angular-cookie

于 2013-12-14T02:56:17.900 に答える
16

Cookie の有効期間が長くなることを知っている人もいるので、追加の例を示したいと思います。すなわち。Cookie の有効期間を 10 分、または 1 日延長したいと考えています。

通常、Cookie が何秒間存続するかは既にわかっています。

    var today = new Date();
    var expiresValue = new Date(today);

    //Set 'expires' option in 1 minute
    expiresValue.setMinutes(today.getMinutes() + 1); 

    //Set 'expires' option in 2 hours
    expiresValue.setMinutes(today.getMinutes() + 120); 


    //Set 'expires' option in (60 x 60) seconds = 1 hour
    expiresValue.setSeconds(today.getSeconds() + 3600); 

    //Set 'expires' option in (12 x 60 x 60) = 43200 seconds = 12 hours
    expiresValue.setSeconds(today.getSeconds() + 43200); 

    $cookies.putObject('myCookiesName', 'myCookiesValue',  {'expires' : expiresValue});

通常どおり取得できます。

    var myCookiesValue = $cookies.getObject('myCookiesName');

空の場合は undefined を返します。

リンク;

http://www.w3schools.com/jsref/jsref_obj_date.asp
https://docs.angularjs.org/api/ngCookies/provider/ $cookiesProvider#defaults

于 2016-09-09T11:08:45.170 に答える
3

angular.js スクリプトに移動し、挿入 Cookie
検索をself.cookies = function(name, value) { 変更してから、たとえば 7 日間 Cookie を追加するコードを変更できます。

 if (value === undefined) {
    rawDocument.cookie = escape(name) + "=;path=" + cookiePath +
                            ";expires=Thu, 01 Jan 1970 00:00:00 GMT";
  } else {
    if (isString(value)) {
        var now = new Date();
        var time = now.getTime();
        time += 24*60*60*1000*7;
        now.setTime(time);
         cookieLength = (rawDocument.cookie = escape(name) + '=' + escape(value) +
                 ';path=' + cookiePath+";expires="+now.toGMTString()).length + 1
于 2014-09-07T12:45:14.753 に答える
1

@vincent-brigliaが指摘したよう$cookieに、サービスが構成可能になるまで回避策として使用できる jQuery ドロップインがあります -ここで確認してください

于 2013-09-20T16:19:01.787 に答える