Node js terhubung ke mongodb dengan otentikasi

Pembaca seperti Anda membantu mendukung MUO. Saat Anda melakukan pembelian menggunakan tautan di situs kami, kami dapat memperoleh komisi afiliasi. Baca selengkapnya

Jika Anda ingin melindungi konten sensitif di aplikasi Node, Anda memerlukan cara untuk mengautentikasi pengguna. Namun, membangun sistem autentikasi Anda sendiri itu rumit, dan memakan waktu serta jika tidak dilakukan dengan benar dapat menimbulkan kerentanan keamanan pada aplikasi Anda. Alat pihak ketiga seperti Passport membuat autentikasi menjadi lebih mudah

Dalam tutorial ini, Anda akan mempelajari cara mengimplementasikan autentikasi di Node menggunakan Passport dan MongoDB

Apa itu Otentikasi dan Otorisasi?

Meskipun autentikasi dan otorisasi terkadang digunakan secara bergantian, kedua konsep keamanan ini memiliki arti yang berbeda. Otentikasi adalah proses memverifikasi pengguna adalah siapa yang mereka klaim sementara otorisasi adalah proses menentukan apakah pengguna yang diautentikasi memiliki akses ke bagian tertentu dari aplikasi Anda

Apa itu Paspor. js?

Paspor. js (atau Paspor) adalah middleware otentikasi untuk NodeJS yang menyediakan lebih dari 500 strategi untuk mengautentikasi pengguna termasuk paspor-lokal yang menggunakan nama pengguna dan kata sandi

Tutorial ini menggunakan passport-local dan passport-jwt untuk mengamankan rute

Cara Mengatur Otentikasi Pengguna di NodeJS

Sekarang Anda tahu sedikit tentang otentikasi pengguna dan Paspor. js, kita bisa melihat cara mengatur autentikasi di NodeJS. Di bawah ini, kami telah menguraikan langkah-langkah yang harus Anda ambil

Langkah 1. Siapkan Server Node

Buat folder bernama user-auth-nodejs dan arahkan ke sana menggunakan terminal Anda

mkdir user-auth-nodejs

cd user-auth-nodejs

Selanjutnya inisialisasi paket. json

npm init _

Karena Anda akan menggunakan Express, kerangka kerja backend NodeJS, instal dengan menjalankan perintah berikut

npm i express

Sekarang buat file, app. js, dan tambahkan kode berikut untuk membuat server

const express = require("express");
const app = express();
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Listening on port ${PORT}`);
});

Terkait. Pelajari Cara Menginstal Npm dan Node. js di Ubuntu

Langkah 2. Siapkan Basis Data

Anda memerlukan database untuk menyimpan data pengguna. Anda akan menggunakan luwak untuk membuat skema data MongoDB yang menentukan struktur dan tipe data yang akan Anda simpan di database. Karena Anda menyimpan data pengguna, buat skema pengguna

Instal luwak

npm i mongoose _

Buat file baru, userModel. js, dan tambahkan berikut ini

const mongoose = require('mongoose')
const {Schema} = mongoose
const UserSchema = new Schema ({
   email: {
       type: String,
       required: true
   },
   password: {
       type: String,
       required: true
   }
})
const UserModel = mongoose.model('user', UserSchema);
module.exports = UserModel;

Terkait. Cara Membuat Database dan Koleksi di MongoDB

Sebelum menyimpan kata sandi, Anda perlu mengenkripsinya untuk tujuan keamanan. Anda akan menggunakan bcryptjs, paket npm yang sangat berguna yang memudahkan bekerja dengan kata sandi terenkripsi

Instal bcryptjs

npm i bcryptjs _

Ubah model pengguna. js untuk mengenkripsi kata sandi sebelum menyimpannya ke database

const mongoose = require('mongoose')
const bcrypt = require('bcryptjs');
const {Schema} = mongoose

const UserSchema = new Schema ({
...
})

UserSchema.pre('save', async function(next) {
   try {
     // check method of registration
     const user = this;
     if (!user.isModified('password')) next();
     // generate salt
     const salt = await bcrypt.genSalt(10);
     // hash the password
     const hashedPassword = await bcrypt.hash(this.password, salt);
     // replace plain text password with hashed password
     this.password = hashedPassword;
     next();
   } catch (error) {
     return next(error);
   }
 });
...
const User = mongoose.model('User', UserSchema);

Di sini Anda menggunakan pre save hook untuk mengubah kata sandi sebelum disimpan. Idenya adalah untuk menyimpan versi hash dari kata sandi alih-alih kata sandi teks biasa. Hash adalah string kompleks panjang yang dihasilkan dari string teks biasa

Gunakan isModified untuk memeriksa apakah kata sandi berubah karena Anda hanya perlu mencirikan kata sandi baru. Selanjutnya, buat garam dan berikan dengan kata sandi teks biasa ke metode hash untuk menghasilkan kata sandi hash. Terakhir, ganti kata sandi teks biasa dengan kata sandi hash di database

Buat db. js dan konfigurasikan database

const mongoose = require("mongoose");
mongoose.Promise = global.Promise;
const dbUrl = "mongodb://localhost/user";
const connect = async () => {
mongoose.connect(dbUrl, { useNewUrlParser: true, useUnifiedTopology: true });
const db = mongoose.connection;
 db.on("error", () => {
   console.log("could not connect");
 });
 db.once("open", () => {
   console.log("> Successfully connected to database");
 });
};
module.exports = { connect }; _

Dalam aplikasi. js, sambungkan ke database

// connect to db
const db = require('./db');
db.connect(); _

Langkah 3. Siapkan Paspor

Instal Paspor dan paspor-lokal. Anda akan menggunakan paket ini untuk mendaftar dan login pengguna

npm init _0

Buat file baru, passportConfig. js, dan import passport-local dan userModel. js

npm init _1

Konfigurasikan Paspor untuk menangani pendaftaran pengguna

npm init _2

Pada kode di atas, Anda memeriksa apakah email sudah digunakan. Jika email tidak ada, daftarkan pengguna. Perhatikan bahwa Anda juga menyetel bidang nama pengguna untuk menerima email. Secara default, passport-local mengharapkan nama pengguna, jadi Anda harus memberi tahu bahwa Anda mengirimkan email sebagai gantinya

Gunakan paspor-lokal untuk juga menangani login pengguna

npm init _3

Di sini, periksa apakah pengguna ada di database, dan jika ya, periksa apakah kata sandi yang diberikan cocok dengan yang ada di database. Perhatikan bahwa Anda juga memanggil metode matchPassword() pada model pengguna, jadi buka userModel. js dan menambahkannya

npm init _4

Metode ini membandingkan kata sandi dari pengguna dan yang ada di database dan mengembalikan nilai true jika cocok

Langkah 4. Siapkan Rute Otentikasi

Anda sekarang perlu membuat titik akhir yang akan dikirimi data oleh pengguna. Pertama adalah rute pendaftaran yang akan menerima email dan kata sandi pengguna baru

Dalam aplikasi. js, gunakan middleware otentikasi paspor yang baru saja Anda buat untuk mendaftarkan pengguna

npm init _5 npm init 6

Terkait. Otentikasi vs. Otorisasi. Apa bedanya?

Jika berhasil, rute pendaftaran harus mengembalikan pengguna yang dibuat

Selanjutnya, buat rute login

npm init _7

Langkah 5. Tambahkan Rute Terlindungi

Sejauh ini, Anda telah menggunakan Passport untuk membuat middleware yang mendaftarkan pengguna di database dan lainnya yang memungkinkan pengguna terdaftar untuk masuk. Selanjutnya, Anda akan membuat middleware otorisasi untuk melindungi rute sensitif menggunakan token web JSON (JWT). Untuk menerapkan otorisasi JWT, Anda perlu melakukannya

  • Hasilkan token JWT
  • Berikan token kepada pengguna. Pengguna akan mengirimkannya kembali dalam permintaan otorisasi
  • Verifikasi token yang dikirim kembali oleh pengguna

Anda akan menggunakan paket jsonwebtoken untuk menangani JWT

Jalankan perintah berikut untuk menginstalnya

npm i jsonwebtoken

Selanjutnya, buat token untuk setiap pengguna yang berhasil masuk

Dalam aplikasi. js, impor jsonwebtoken dan ubah rute login seperti di bawah ini

npm init _8

Dalam aplikasi kehidupan nyata, Anda akan menggunakan kunci rahasia yang lebih rumit dan menyimpannya dalam file konfigurasi

Rute masuk mengembalikan token jika berhasil

Gunakan paspor-jwt untuk mengakses rute yang dilindungi

npm init _9

Di passportConfig. js, konfigurasikan paspor-jwt

npm i express 0

Perhatikan Anda mengekstraksi JWT dari header otorisasi alih-alih badan permintaan. Ini mencegah peretas mencegat permintaan dan mengambil token

Untuk melihat bagaimana rute penjaga paspor-jwt, buat rute yang dilindungi di aplikasi. js

npm i express 1

Hanya permintaan dengan JWT yang valid yang mengembalikan data pengguna

Sekarang Anda Siap Membawa Otentikasi Pengguna Anda ke Tingkat Selanjutnya

Dalam tutorial ini, Anda mempelajari cara mengautentikasi pengguna menggunakan email dan kata sandi dengan bantuan Passport. Ini mungkin tampak menakutkan pada awalnya, tetapi prosesnya relatif mudah. Anda dapat melangkah lebih jauh dan menggunakan penyedia identitas pihak ketiga yang didukung oleh Passport seperti Twitter, Facebook, dan Google

Bagaimana cara menghubungkan MongoDB dengan nama pengguna dan kata sandi di Node js?

var db = MongoDB baru(dbName, Server baru('localhost', 27017 , {auto_reconnect. benar}), {w. 1}); . buka(fungsi(e, db){ jika (e) { konsol. log(e); . log('terhubung ke basis data. ' + namadb);

Bisakah saya menggunakan MongoDB untuk autentikasi pengguna?

Untuk mengautentikasi sebagai pengguna, Anda harus memberikan nama pengguna, sandi, dan database autentikasi yang terkait dengan pengguna tersebut . Untuk mengotentikasi menggunakan shell mongo juga. Hubungkan terlebih dahulu ke instance MongoDB atau mongos. Jalankan perintah otentikasi atau db.

Bagaimana cara menambahkan otentikasi ke node js?

Cara mengautentikasi pengguna di Node. .
Konfigurasi OneLogin. Buat aplikasi OpenId Connect (OIDC) baru dari panel Administrasi OneLogin. .
Konfigurasikan aplikasi untuk terhubung ke OneLogin. Aplikasi sampel menggunakan kerangka kerja web Express untuk Node. .
Mulai aplikasi

Bagaimana Anda mengautentikasi dan mengotorisasi permintaan di node JS?

Pengembangan API menggunakan token JWT untuk autentikasi di Node. .
Langkah 1 - Buat direktori dan inisialisasi npm. .
Langkah 2 - Buat file dan direktori. .
Langkah 3 - Instal dependensi. .
Langkah 4 - Buat Node. .
Langkah 5 - Buat model dan rute pengguna. .
Langkah 6 - Menerapkan fungsi register dan login

Postingan terbaru

LIHAT SEMUA