Learn-json-web-tokens: Penyimpanan web dan peningkatan progresif

Dibuat pada 15 Okt 2015  ·  9Komentar  ·  Sumber: dwyl/learn-json-web-tokens

Dalam #5, #46 dan sebagian besar diskusi online, orang-orang tampaknya menggunakan penyimpanan lokal/penyimpanan sesi untuk JWT secara default, daripada dalam cookie. Ini membutuhkan penggunaan AJAX di seluruh aplikasi sehingga header dapat diatur dari penyimpanan web setiap saat. Pemahaman saya adalah bahwa ini untuk mencegah pemalsuan permintaan lintas situs (dan pada dasarnya memanfaatkan kebijakan asal yang sama untuk melakukan ini).

Bagaimana ini cocok dengan peningkatan progresif, di mana beberapa perangkat tidak akan mendukung javascript sama sekali?

enhancement question

Komentar yang paling membantu

Belum tentu meskipun ini tergantung pada perangkat Anda. Angular misalnya memungkinkan Anda untuk mengatur ini sekali .. saya pikir Anda bahkan dapat melakukannya dengan jquery dengan mudah.

$.ajaxSetup({
   headers: { 'x-my-custom-header': 'some value' }
});

Masalah lain dengan cookie sebagai lapisan transport untuk token adalah Anda menggunakan 2 batas waktu dan Anda tidak mendapatkan manfaat dari menghindari masalah CORS. Cookie mempersulit akses ke layanan web RESTful. Jauh lebih mudah untuk membuat curl satu liner untuk mengakses sumber daya dengan token daripada memaketkan dalam cookie.

Semua 9 komentar

_Another_ _GREAT _ Pertanyaan dari _Wizard_! :+1:
Untuk keperluan contoh mikro ini, saya pikir "_Ok_" menggunakan localStorage .
Jujur saja, _everyone_ menggunakan React akhir-akhir ini tanpa memperhatikan aksesibilitas.
Semua anak keren _way_ lebih tertarik pada _Kerangka Kerja Baru yang Mengkilap_ daripada _Peningkatan Progresif_...

Namun...
Dalam aplikasi _aktual_ kami, kami menggunakan cookies _tepatnya_ untuk kompatibilitas mundur dan peningkatan progresif.
Itu sebabnya kami menambahkan opsi ke JWT2 ... lihat: https://github.com/dwyl/hapi-auth-jwt2#want -to-sendstore-your-jwt-in-a-cookie

Jadi kesimpulannya: Saya akan menambahkan localStorage ke contoh di repo ini dan menambahkan comment memberi tahu orang-orang bahwa menggunakan cookie untuk menyimpan JWT adalah "_Ohkay_" karena Anda masih mendapatkan semua _skalabilitas horizontal_ dan keamanan manfaat menggunakan JWT sambil menghemat _effort_ karena harus mengatur/mendapatkan JWT dan menambahkannya ke header pada setiap permintaan ...

@rjmk & @nelsonic

apakah ada alasan khusus mengapa JWTS yang disimpan di penyimpanan lokal harus dikirim di header atau adakah yang rentan/"salah" tentang penggunaan https://www.npmjs.com/package/node-localstorage?

@Jbarget apakah Anda membangun "_Universal_" yang mengharuskan Anda memiliki akses ke localStorage di server? Jika itu adalah kasus penggunaan Anda maka modul node-localstorage akan melayani tujuan Anda.
_Namun_ Anda masih harus _secara manual_ mengirim JWT di header untuk mengirimnya kembali ke server dalam permintaan "AJAX"... jadi tidak banyak keuntungan menggunakan _module_ jika semua yang ingin Anda lakukan adalah mendapatkan/mengatur token ke/dari localStorage ...

@nelsonic kami mungkin akan mengaturnya di header setiap permintaan, terima kasih atas kejelasannya!

@Jbarget apakah Anda memiliki _objection_ untuk menyimpan JWT dalam cookie? (_itu menyederhanakan hidup Anda..._)

@nelsonic tidak keberatan, apakah saya benar dalam berpikir itu menyederhanakan hidup saya dengan dapat mengakses cookie dari mana saja di aplikasi yang bertentangan dengan penyimpanan lokal/sesi?

Ini menyederhanakan aplikasi Anda karena setelah cookie _diset_ oleh server, _semua_ permintaan yang dikirim/diterima akan selalu berisi cookie. yang berarti Anda _tidak pernah_ perlu _memikirkannya_ setelah titik itu.
Sebaliknya menyimpan JWT di localStorage berarti Anda tidak dapat memiliki interaksi non-ajax dan Anda harus ingat untuk SET auth header

Belum tentu meskipun ini tergantung pada perangkat Anda. Angular misalnya memungkinkan Anda untuk mengatur ini sekali .. saya pikir Anda bahkan dapat melakukannya dengan jquery dengan mudah.

$.ajaxSetup({
   headers: { 'x-my-custom-header': 'some value' }
});

Masalah lain dengan cookie sebagai lapisan transport untuk token adalah Anda menggunakan 2 batas waktu dan Anda tidak mendapatkan manfaat dari menghindari masalah CORS. Cookie mempersulit akses ke layanan web RESTful. Jauh lebih mudah untuk membuat curl satu liner untuk mengakses sumber daya dengan token daripada memaketkan dalam cookie.

Masalah ini ditutup secara otomatis karena sudah lebih dari satu tahun. Silakan buka kembali jika masih relevan dengan proyek Anda.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

nelsonic picture nelsonic  ·  4Komentar

alanshaw picture alanshaw  ·  6Komentar

KumarS-Naveen picture KumarS-Naveen  ·  3Komentar

joepie91 picture joepie91  ·  18Komentar

sarneeh picture sarneeh  ·  3Komentar