Apakah ada perpustakaan otentikasi pengguna yang ada untuk node.js? Secara khusus saya mencari sesuatu yang dapat melakukan otentikasi kata sandi untuk pengguna (menggunakan DB backend auth kustom), dan mengaitkan pengguna itu dengan sesi.
Sebelum saya menulis perpustakaan auth, saya pikir saya akan melihat apakah orang tahu perpustakaan yang ada. Tidak dapat menemukan sesuatu yang jelas melalui pencarian google.
- Shreyas
omniauth
(rails) atau pythonsocial-auth
. Pengguna PHP (dan bahasa server web umum lainnya) juga harus merasa bebas untuk menambahkan padanannya.Jawaban:
Jika Anda mencari kerangka kerja otentikasi untuk Connect atau Express, Passport layak diselidiki: https://github.com/jaredhanson/passport
(Pengungkapan: Saya adalah pengembang Paspor)
Saya mengembangkan Passport setelah menyelidiki kedua connect-auth dan everyauth. Walaupun keduanya merupakan modul yang hebat, mereka tidak sesuai dengan kebutuhan saya. Saya menginginkan sesuatu yang lebih ringan dan tidak mencolok.
Paspor dipecah menjadi modul terpisah, sehingga Anda dapat memilih untuk hanya menggunakan apa yang Anda butuhkan (OAuth, hanya jika perlu). Paspor juga tidak memasang rute apa pun di aplikasi Anda, memberi Anda fleksibilitas untuk memutuskan kapan dan di mana Anda ingin otentikasi, dan menghubungkan untuk mengontrol apa yang terjadi ketika otentikasi berhasil atau gagal.
Misalnya, berikut adalah proses dua langkah untuk menyiapkan otentikasi berbasis-nama-pengguna (kata sandi dan kata sandi):
Strategi tambahan tersedia untuk otentikasi melalui Facebook, Twitter, dll. Strategi khusus dapat dicolokkan, jika perlu.
sumber
done(null,false,{ message:'Incorrect username.' })
mengerikan karena kita tidak tahu semua parameter itu.Sesi + Jika
Saya kira alasan bahwa Anda belum menemukan banyak perpustakaan yang bagus adalah bahwa menggunakan perpustakaan untuk otentikasi kebanyakan direkayasa.
Apa yang Anda cari hanyalah pengikat sesi :) Sesi dengan:
itu dia.
Saya tidak setuju dengan kesimpulan Anda bahwa plugin connect-auth adalah cara yang harus dilakukan.
Saya menggunakan juga terhubung tetapi saya tidak menggunakan connect-auth karena dua alasan:
IMHO memecah connect-auth arsitektur onion-ring yang sangat kuat dan mudah dibaca dari connect. A no-go - pendapat saya :). Anda dapat menemukan artikel yang sangat bagus dan pendek tentang cara kerja koneksi dan ide cincin bawang di sini .
Jika Anda - seperti yang ditulis - hanya ingin menggunakan login dasar atau http dengan database atau file. Connect-auth terlalu besar. Ini lebih untuk hal-hal seperti OAuth 1.0, OAuth 2.0 & Co
Otentikasi yang sangat sederhana dengan koneksi
(Sudah selesai. Cukup jalankan untuk pengujian tetapi jika Anda ingin menggunakannya dalam produksi, pastikan untuk menggunakan https) (Dan untuk menjadi REST-Principle-Compliant Anda harus menggunakan POST-Permintaan daripada GET-Permintaan b / c Anda mengubah keadaan :)
CATATAN
Saya menulis pernyataan ini lebih dari setahun yang lalu dan saat ini tidak memiliki proyek simpul aktif. Jadi mungkin ada Perubahan API di Express. Silakan tambahkan komentar jika saya harus mengubah apa pun.
sumber
Sepertinya plugin connect-auth ke connect middleware persis seperti yang saya butuhkan: http://wiki.github.com/ciaranj/connect-auth/creating-a-form-based-strategy
Saya menggunakan express [ http://expressjs.com ] sehingga plugin connect sangat cocok karena express subclass (ok - prototyped) dari connect
sumber
Saya pada dasarnya mencari hal yang sama. Secara khusus, saya menginginkan yang berikut:
Apa yang akhirnya saya lakukan adalah membuat fungsi middleware saya sendiri
check_auth
yang saya sampaikan sebagai argumen untuk setiap rute yang ingin saya otentikasi.check_auth
hanya memeriksa sesi dan jika pengguna tidak masuk, maka arahkan mereka ke halaman login, seperti:Lalu untuk setiap rute, saya memastikan fungsi ini dilewatkan sebagai middleware. Sebagai contoh:
Akhirnya, kita harus benar-benar menangani proses login. Ini mudah:
Bagaimanapun, pendekatan ini sebagian besar dirancang agar fleksibel dan sederhana. Saya yakin ada banyak cara untuk memperbaikinya. Jika Anda punya, saya sangat ingin umpan balik Anda.
EDIT: Ini adalah contoh yang disederhanakan. Dalam sistem produksi, Anda tidak akan pernah ingin menyimpan & membandingkan kata sandi dalam teks biasa. Sebagai komentator tunjukkan, ada lib yang dapat membantu mengelola keamanan kata sandi.
sumber
Lihat juga everyauth jika Anda ingin integrasi login pihak ketiga / jejaring sosial.
sumber
Berikut adalah beberapa kode untuk otentikasi dasar dari salah satu proyek saya. Saya menggunakannya melawan CouchDB dengan dan cache data auth tambahan, tapi saya menghapus kode itu.
Bungkus metode otentikasi di sekitar Anda meminta penanganan, dan berikan panggilan balik kedua untuk otentikasi gagal. Callback yang berhasil akan mendapatkan nama pengguna sebagai parameter tambahan. Jangan lupa untuk menangani permintaan dengan kredensial yang salah atau tidak ada dengan benar dalam kegagalan panggilan balik:
sumber
Cara berbeda dalam otentikasi adalah Tanpa Kata Sandi, modul otentikasi berbasis token untuk mengekspresikan yang menghindari masalah inheren kata sandi [1]. Ini cepat diimplementasikan, tidak memerlukan terlalu banyak formulir, dan menawarkan keamanan yang lebih baik untuk rata-rata pengguna (pengungkapan penuh: Saya penulis).
[1]: Kata sandi sudah usang
sumber
Beberapa tahun telah berlalu dan saya ingin memperkenalkan solusi otentikasi saya untuk Express. Ini disebut Lockit . Anda dapat menemukan proyeknya di GitHub dan pengantar singkat di blog saya .
Jadi apa perbedaan dengan solusi yang ada?
require('lockit')
,lockit(app)
, dilakukanusername
danpassword
.Lihatlah contoh - contohnya .
sumber
Ada sebuah proyek bernama Drywall yang mengimplementasikan sistem login pengguna dengan Passport dan juga memiliki panel admin manajemen pengguna. Jika Anda mencari otentikasi pengguna dengan fitur lengkap dan sistem manajemen yang mirip dengan apa yang dimiliki Django tetapi untuk Node.js, ini dia. Saya menemukan itu menjadi titik awal yang sangat baik untuk membangun aplikasi simpul yang memerlukan otentikasi pengguna dan sistem manajemen. Lihat jawaban Jared Hanson untuk informasi tentang cara kerja Passport.
sumber
Berikut adalah dua perpustakaan Github populer untuk otentikasi simpul js:
https://github.com/jaredhanson/passport (disarankan)
https://nodejsmodules.org/pkg/everyauth
sumber
Contoh sederhana cepat menggunakan mongo, untuk API yang menyediakan authsi pengguna untuk klien Angular
di app.js
untuk rute Anda kira-kira seperti ini:
Kemudian di rute Anda yang memerlukan auth Anda hanya dapat memeriksa sesi pengguna:
sumber
Berikut adalah perpustakaan otentikasi baru yang menggunakan token cap waktu. Token dapat diemailkan atau dikirim sms ke pengguna tanpa harus menyimpannya dalam database. Dapat digunakan untuk otentikasi tanpa kata sandi atau untuk otentikasi dua faktor.
https://github.com/vote539/easy-no-password
Pengungkapan: Saya adalah pengembang perpustakaan ini.
sumber
Jika Anda memerlukan otentikasi dengan SSO (Single Sign On) dengan akun pengguna Microsoft Windows. Anda dapat mencoba https://github.com/jlguenego/node-expose-sspi .
Ini akan memberi Anda
req.sso
objek yang berisi semua informasi pengguna klien (login, nama tampilan, sid, grup).Penafian: Saya penulis node-expose-sspi.
sumber
manis-auth
Modul otentikasi pengguna yang ringan dan tanpa konfigurasi. Itu tidak memerlukan database sperate.
https://www.npmjs.com/package/sweet-auth
Sederhana seperti:
sumber