Pertanyaan Cara menetapkan tanggal kedaluwarsa untuk cookie di AngularJS


  1. Kami ingin menyimpan informasi Otorisasi Pengguna dalam cookie yang seharusnya tidak hilang saat memperbarui (F5) browser.

  2. Kami ingin menyimpan informasi otorisasi di "cookie permanen" jika pengguna memilih kotak centang "Ingat Saya" pada saat log-on.


76
2017-09-27 14:51


asal


Jawaban:


Ini mungkin dalam bentuk 1.4.0 dari sudut menggunakan ngCookies modul:

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});
}]);

39
2018-03-13 13:20



Untuk 1.4: Seperti yang tercantum dalam komentar di sini dan yang lain di bawah, mulai dari 1.4, dukungan cookie asli Angular sekarang menyediakan kemampuan untuk mengedit cookie:

Karena 38fbe3ee, $ cookies tidak akan lagi mengekspos properti itu   mewakili nilai cookie browser saat ini. $ cookies tidak lagi jajak pendapat   browser untuk perubahan pada cookie dan tidak lagi menyalin cookie   nilai ke objek $ cookie.

Ini diubah karena pemungutan suara itu mahal dan menimbulkan masalah   dengan properti $ cookie tidak disinkronkan dengan benar dengan   nilai cookie browser sebenarnya (Alasan polling awalnya   ditambahkan adalah untuk memungkinkan komunikasi antara tab yang berbeda, tetapi ada   cara yang lebih baik untuk melakukan hal ini hari ini, misalnya localStorage.)

API baru pada $ cookies adalah sebagai berikut:

dapatkan getObject putObject getAll remove Anda harus secara eksplisit menggunakan   metode di atas untuk mengakses data cookie. Ini juga berarti bahwa Anda   tidak bisa lagi melihat properti di $ cookies untuk mendeteksi perubahan itu   terjadi pada cookie browser.

Fitur ini umumnya hanya diperlukan jika pustaka pihak ketiga   mengubah cookie secara terprogram saat waktu proses. Jika Anda mengandalkan ini   maka Anda harus menulis kode yang dapat bereaksi terhadap pihak ke-3   perpustakaan yang membuat perubahan pada cookie atau mengimplementasikan polling Anda sendiri   mekanisme.

Implementasi yang sebenarnya dilakukan melalui $ cookiesProvider objek, yang dapat diteruskan melalui put panggilan.

Untuk 1,3 dan di bawah: Bagi Anda yang telah melakukan yang terbaik untuk menghindari memuat plugin jQuery, ini tampaknya menjadi pengganti yang bagus untuk sudut - https://github.com/ivpusic/angular-cookie


32
2017-12-14 02:56



Di Angular v1.4 Anda bisa akhirnya mengatur beberapa opsi untuk cookie, seperti kedaluwarsa. Ini contoh yang sangat sederhana:

var now = new Date(),
    // this will set the expiration to 12 months
    exp = new Date(now.getFullYear()+1, now.getMonth(), now.getDate());

$cookies.put('someToken','blabla',{
  expires: exp
});

var cookie = $cookies.get('someToken');
console.log(cookie); // logs 'blabla'

Jika Anda memeriksa cookie Anda setelah menjalankan kode ini, Anda akan melihat bahwa kedaluwarsa akan diatur dengan benar ke cookie bernama someToken.

Objek dinyatakan sebagai param ketiga untuk put fungsi di atas memungkinkan opsi lain juga, seperti pengaturan path, domain dan secure. Memeriksa dokumen untuk ikhtisar.

PS - Sebagai catatan tambahan jika Anda meningkatkan pikiran itu $cookieStore sudah usang, jadi $cookies sekarang adalah satu-satunya metode untuk menangani cookie. Lihat dokumen


26
2018-03-04 12:44



Saya ingin menyajikan contoh tambahan karena beberapa orang tahu durasi ekstra dari cookie seumur hidup. yaitu. Mereka ingin mengatur cookie untuk 10 menit terakhir, atau 1 hari lagi.

Biasanya Anda sudah tahu berapa lama lagi cookie akan bertahan dalam hitungan detik.

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

dan Anda dapat mengambilnya seperti biasa:

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

Jika kosong, ia mengembalikan undefined.

Tautan;

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


9
2017-09-09 11:08



Anda dapat pergi ke skrip angular.js dan mengubah cookie insert
pencarian untuk self.cookies = function(name, value) { maka Anda dapat mengubah kode yang menambahkan cookie misalnya selama 7 hari

 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

3
2017-09-07 12:45



Saya tahu bahwa pertanyaan ini agak lama, dan sudah memiliki jawaban yang diterima.

Tetapi masih ada masalah saat ini yang saya perjuangkan (tidak mengenai jQuery atau Javascript murni).

Jadi, setelah beberapa penelitian saya menemukan ini: https://github.com/ivpusic/angular-cookie

Yang memberikan "antarmuka" sangat mirip dengan $ cookieStore. Dan memungkinkan untuk mengkonfigurasi tanggal kedaluwarsa (nilai dan unit).

Tentang dukungan asli sudut pada tanggal kedaluwarsa dengan $ cookie atau $ cookieStore, "mereka" menjanjikan pembaruan pada subjek ini di 1.4, lihat ini: https://github.com/angular/angular.js/pull/10530

Ini akan mungkin untuk mengatur tanggal kedaluwarsa dengan $ cookieStore.put (...), setidaknya mereka mengusulkan bahwa ...

EDIT: Saya mengalami "masalah" Anda tidak dapat mencampur $ cookies dengan modular angular-cookie. Jadi jika Anda mengatur cookie denganipCookie(...) ambil dengan ipCookie(...) karena dengan $ cookie itu akan kembali undefined.


2
2018-02-05 22:56



Sebagai @ vincent-briglia menunjukkan, ada jQuery drop-in yang dapat digunakan sebagai solusi hingga $cookie layanan menjadi dapat dikonfigurasi - Lihat disini


1
2017-09-20 16:19



Anda dapat menggunakan https://github.com/ivpusic/angular-cookie

Pertama Anda perlu memasukkan ipCookie ke modul sudut Anda.

var myApp = angular.module('myApp', ['ipCookie']);

Dan sekarang, misalnya jika Anda ingin menggunakannya dari pengontrol Anda

myApp.controller('cookieController', ['$scope', 'ipCookie', function($scope, ipCookie) {
  // your code here
}]);

Untuk membuat penggunaan cookie

ipCookie(key, value);

Nilai mendukung string, angka, boolean, array, dan objek dan akan secara otomatis diserialisasi ke cookie.

Anda juga dapat mengatur beberapa opsi tambahan, seperti jumlah hari ketika cookie berakhir

ipCookie(key, value, { expires: 21 });

0
2017-11-06 16:01