Rumah >hujung hadapan web >tutorial js >Pengesahan dalam Node.js

Pengesahan dalam Node.js

王林
王林asal
2024-08-19 17:29:02803semak imbas

Authentication in Node.js

Pengesahan dalam Node.js

  1. Apakah Pengesahan?
    Pengesahan ialah proses mengesahkan identiti pengguna atau sistem. Dalam aplikasi web, pengesahan memastikan bahawa orang yang cuba mengakses sistem adalah siapa yang mereka dakwa. Proses ini biasanya melibatkan pengguna yang menyediakan bukti kelayakan, seperti nama pengguna dan kata laluan, yang kemudiannya disahkan oleh sistem terhadap rekod yang disimpan.

  2. Mengapa Kami Menggunakan Pengesahan?
    Keselamatan: Melindungi data sensitif dan memastikan bahawa hanya pengguna yang dibenarkan mempunyai akses kepada bahagian tertentu aplikasi.
    Akauntabiliti Pengguna: Menjejaki tindakan pengguna dan memastikan mereka bertanggungjawab jika perlu.
    Pemperibadian: Menyesuaikan pengalaman kepada pengguna individu, seperti memaparkan kandungan atau tetapan yang diperibadikan.

  3. Faedah Pengesahan dalam Node.js
    Kebolehskalaan: Node.js boleh mengendalikan berbilang permintaan pengesahan secara serentak, menjadikannya sesuai untuk aplikasi dengan trafik tinggi.
    Fleksibiliti: Menyokong pelbagai kaedah pengesahan, daripada log masuk berasaskan kata laluan ringkas kepada mekanisme berasaskan OAuth dan JWT yang lebih kompleks.
    Penyepaduan: Mudah disepadukan dengan pelbagai pangkalan data dan perkhidmatan pihak ketiga untuk pengurusan dan pengesahan pengguna.
    Kaedah Pengesahan dalam Node.js

  4. Pengesahan Berasaskan Kata Laluan
    Apa:
    Pengguna memasukkan nama pengguna dan kata laluan. Kata laluan dicincang dan disimpan dalam pangkalan data. Selepas log masuk, kata laluan yang dimasukkan dicincang semula dan dibandingkan dengan cincang yang disimpan.

Mengapa Kami Menggunakannya:
Ia ringkas dan mudah, menjadikannya mudah dilaksanakan untuk keperluan keselamatan asas.

Kebaikan:
Kesederhanaan: Mudah disediakan dan difahami.
Penggunaan meluas: Pengguna sudah biasa dengan kaedah ini.
Fleksibel: Boleh digabungkan dengan kaedah pengesahan lain untuk meningkatkan keselamatan.

  1. Pengesahan Berasaskan Token (JWT) Apakah: Selepas log masuk, token (biasanya JWT - Token Web JSON) dikeluarkan. Pelanggan menyimpan token ini dan menghantarnya dengan setiap permintaan berikutnya untuk mengakses sumber yang dilindungi.

Mengapa Kami Menggunakannya:
Pengesahan berasaskan token adalah tanpa kewarganegaraan, menjadikannya sesuai untuk aplikasi berskala.

Kebaikan:
Kebolehskalaan: Tidak perlu menyimpan data sesi pada pelayan.
Stateless: Meningkatkan prestasi dengan menghapuskan keperluan untuk pengurusan sesi.
Sokongan Cross-Domain: Berfungsi dengan baik dengan aplikasi satu halaman (SPA) dan apl mudah alih.

  1. Pengesahan OAuth Apakah: OAuth membenarkan pengguna log masuk menggunakan bukti kelayakan mereka daripada perkhidmatan lain, seperti Google atau Facebook.

Mengapa Kami Menggunakannya:
Menyediakan cara yang selamat dan mesra pengguna untuk mengesahkan pengguna tanpa memerlukan mereka membuat satu lagi set bukti kelayakan.

Kebaikan:
Kemudahan Pengguna: Pengguna tidak perlu mengingati kata laluan lain.
Keselamatan: Mengurangkan risiko pelanggaran berkaitan kata laluan kerana kata laluan pengguna tidak pernah dikongsi dengan apl anda.
Amanah: Pengguna mungkin lebih mempercayai pengesahan melalui perkhidmatan terkenal berbanding melalui tapak yang tidak diketahui.
Menggunakan Perpustakaan pasport dalam Node.js

  1. Apakah itu pasport?
    pasport ialah perisian tengah pengesahan untuk Node.js yang memudahkan proses penyepaduan pelbagai strategi pengesahan (seperti tempatan, OAuth dan JWT) ke dalam aplikasi anda.

  2. Kenapa Gunakan pasport?
    Modular: pasport sangat modular, dengan lebih 500 strategi tersedia, menjadikannya mudah untuk mengintegrasikan sebarang jenis kaedah pengesahan.
    Kemudahan Penggunaan: Memudahkan pelaksanaan pengesahan dalam Node.js, membolehkan anda menambah pengesahan pada aplikasi anda dengan usaha yang minimum.
    Sokongan Komuniti: Sebagai salah satu perpustakaan pengesahan paling popular untuk Node.js, pasport mempunyai sokongan dan dokumentasi komuniti yang meluas.

  3. Kebaikan Menggunakan pasport
    Sokongan Strategi: Menyokong pelbagai jenis strategi pengesahan, daripada nama pengguna dan kata laluan asas kepada pembekal OAuth.
    Integrasi Middleware: Bersepadu dengan lancar dengan Express dan rangka kerja berasaskan middleware lain.
    Fleksibiliti: Membenarkan strategi pengesahan tersuai jika perlu.
    Menggunakan Strategi tempatan pasport

  4. Apakah pasport tempatan?
    passport-local ialah strategi untuk mengesahkan dengan nama pengguna dan kata laluan. Ia merupakan salah satu strategi paling mudah yang tersedia dan digunakan apabila anda perlu mengesahkan pangkalan data nama pengguna dan kata laluan.

  5. Mengapa Gunakan pasport tempatan?
    Kesederhanaan: pasport-tempatan adalah mudah untuk disediakan, menjadikannya sesuai untuk aplikasi yang mempunyai pengesahan nama pengguna dan kata laluan asas adalah mencukupi.
    Penyesuaian: Membolehkan anda menentukan cara anda ingin mengesahkan kelayakan dan mengendalikan pengesahan, memberikan anda kawalan ke atas proses pengesahan.

  6. Faedah Menggunakan passport-local
    Kemudahan Persediaan: Tambahkan pengesahan asas pada aplikasi anda dengan cepat.
    Boleh disesuaikan: Anda boleh menentukan logik anda sendiri untuk mengesahkan pengguna, menjadikannya cukup fleksibel untuk disepadukan dengan mana-mana pangkalan data atau sistem pengurusan pengguna.
    Selamat: Digabungkan dengan pencincangan kata laluan (cth., menggunakan bcrypt), ia menyediakan kaedah selamat untuk mengendalikan pengesahan.

Contoh Menyediakan pasport-tempatan dalam Node.js
`const express = memerlukan('express');
pasport const = memerlukan('pasport');
const LocalStrategy = memerlukan('passport-local').Strategi;
const bcrypt = memerlukan('bcryptjs');
aplikasi const = express();

// Pangkalan data pengguna simulasi
pengguna const = [
{ id: 1, nama pengguna: 'pengguna1', kata laluan: bcrypt.hashSync('kata laluan1', 10) },
];

// Konfigurasikan strategi tempatan untuk digunakan oleh Pasport
passport.use(LocalStrategy baharu((nama pengguna, kata laluan, selesai) => {
pengguna const = users.find(u => u.username === nama pengguna);
jika (!pengguna) {
kembalikan selesai(null, false, { message: 'Incorrect username.' });
}
jika (!bcrypt.compareSync(kata laluan, pengguna.kata laluan)) {
return done(null, false, { message: 'Salah kata laluan.' });
}
kembali selesai(null, pengguna);
}));

// Mensiri pengguna ke dalam sesi
passport.serializeUser((pengguna, selesai) => {
selesai(null, user.id);
});

// Nyahserialisasi pengguna daripada sesi
passport.deserializeUser((id, done) => {
pengguna const = users.find(u => u.id === id);
selesai(null, pengguna);
});

// Mulakan pasport dan sesi ekspres
app.use(require('express-session')({ secret: 'rahsia', resave: false, saveUninitialized: false }));
app.use(passport.initialize());
app.use(passport.session());

app.post('/log masuk',
passport.authenticate('local', { failureRedirect: '/login' }),
(req, res) => {
res.redirect('/');
}
);

app.listen(3000, () => {
console.log('Pelayan berjalan pada http://localhost:3000');
});
`

Kesimpulan

Pengesahan ialah aspek asas untuk melindungi sebarang aplikasi web dan Node.js menyediakan ekosistem yang teguh untuk mengendalikannya dengan berkesan. Dengan menggunakan perpustakaan seperti pasport dan strategi seperti pasport tempatan, pembangun boleh melaksanakan penyelesaian pengesahan yang selamat, fleksibel dan berskala yang memenuhi pelbagai keperluan. Sama ada anda sedang membina aplikasi mudah dengan pengesahan berasaskan kata laluan atau sistem kompleks yang menyepadukan berbilang kaedah pengesahan, Node.js menawarkan alatan dan fleksibiliti untuk merealisasikannya.

Atas ialah kandungan terperinci Pengesahan dalam Node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn