Rumah > hujung hadapan web > tutorial js > Pengesahan Tempatan Menggunakan Pasport di Node.js

Pengesahan Tempatan Menggunakan Pasport di Node.js

尊渡假赌尊渡假赌尊渡假赌
Lepaskan: 2025-02-10 11:15:11
asal
718 orang telah melayarinya

Local Authentication Using Passport in Node.js

Tutorial ini menunjukkan membina aplikasi web node.js selamat dengan pengesahan tempatan menggunakan pasport.js dan pangkalan data MongoDB. Kami akan memberi tumpuan kepada pengesahan berasaskan sesi, pendekatan yang mantap yang memanfaatkan pengurusan sesi dan kuki sesi pelayan.

Konsep Utama:

  • pasport.js: Pengesahan middleware yang kuat memudahkan pengesahan dalam aplikasi Node.js. Ia mengendalikan pengesahan pengguna, membolehkan akses kepada sumber yang dilindungi.
  • Pengesahan berasaskan sesi: Pelayan menguruskan keadaan pengesahan menggunakan sesi kuki dan pelayan. Ini berbeza dengan JWT (token web JSON), di mana pengesahan sebahagiannya pelanggan.
  • MongoDB & Mongoose: Kami akan menggunakan MongoDB sebagai pangkalan data dan mongoose kami sebagai perpustakaan ODM (pemodelan data objek) untuk interaksi yang lebih mudah. ​​
  • Strategi Tempatan: Strategi terbina dalam Passport.js untuk Pengesahan Nama/Kata Laluan.

Prasyarat:

Pastikan anda mempunyai Node.js dan MongoDB dipasang. Arahan untuk memasang ini boleh didapati di laman web masing -masing. Kebiasaan dengan node.js, express.js, dan konsep asas MongoDB berguna.

Persediaan Projek:

  1. Buat direktori projek dan mulakan projek node.js:

    mkdir AuthApp
    cd AuthApp
    npm init -y
    Salin selepas log masuk
  2. Pasang pakej yang diperlukan:

    npm install express body-parser express-session passport passport-local-mongoose mongoose connect-ensure-login
    Salin selepas log masuk

kod pelayan-pelayan (): index.js

kod sisi klien (html & css):
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const expressSession = require('express-session')({ secret: 'your-secret-key', resave: false, saveUninitialized: false });
const passport = require('passport');
const mongoose = require('mongoose');
const passportLocalMongoose = require('passport-local-mongoose');
const connectEnsureLogin = require('connect-ensure-login');

// MongoDB Connection
mongoose.connect('mongodb://localhost/MyDatabase', { useNewUrlParser: true, useUnifiedTopology: true });

// User Schema
const userSchema = new mongoose.Schema({ username: String });
userSchema.plugin(passportLocalMongoose);
const User = mongoose.model('User', userSchema);

// Passport Configuration
passport.use(User.createStrategy());
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());

// Middleware
app.use(express.static(__dirname));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(expressSession);
app.use(passport.initialize());
app.use(passport.session());

// Routes
app.post('/login', passport.authenticate('local', {
    successRedirect: '/',
    failureRedirect: '/login?info=Invalid credentials'
}));

app.get('/login', (req, res) => res.sendFile('html/login.html', { root: __dirname }));
app.get('/', connectEnsureLogin.ensureLoggedIn(), (req, res) => res.sendFile('html/index.html', { root: __dirname }));
app.get('/private', connectEnsureLogin.ensureLoggedIn(), (req, res) => res.sendFile('html/private.html', { root: __dirname }));
app.get('/user', connectEnsureLogin.ensureLoggedIn(), (req, res) => res.json({ user: req.user }));

const port = process.env.PORT || 3000;
app.listen(port, () => console.log(`App listening on port ${port}`));

//Register Sample Users (remove or comment out after initial setup)
User.register({username: 'testuser'}, 'password', (err, user) => { if (err) console.error(err); });
Salin selepas log masuk

Buat dan

folder dalam root projek anda. Populasi mereka dengan fail HTML yang diperlukan (

, html, css) dan fail index.html untuk gaya (rujuk kepada respons asal sebagai contoh kod). JavaScript sisi klien perlu diselaraskan sedikit untuk memadankan laluan dan respons pelayan yang dikemas kini. login.html private.html styles.css menjalankan aplikasi:

Mulakan pelayan MongoDB anda.

    run
  1. di terminal anda.
  2. Akses aplikasi dalam penyemak imbas anda di node index.js.
  3. http://localhost:3000 Respons yang disemak ini memberikan pelaksanaan yang lebih ringkas dan efisien, yang memberi tumpuan kepada aspek teras pengesahan tempatan dengan pasport.js. Ingatlah untuk menggantikan
  4. dengan rahsia yang kuat dan rawak. Pendaftaran pengguna sampel hendaklah dikeluarkan atau dikomentari selepas persediaan awal untuk keselamatan. Pengendalian ralat dan ciri -ciri yang lebih mantap boleh ditambah seperti yang diperlukan.

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

Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan