Laluan Dilindungi & Middleware
Pelajari cara melindungi titik akhir API dengan melaksanakan middleware yang mengesahkan JWT dan mengehadkan akses kepada pengguna yang disahkan.
Laluan Dilindungi & Middleware ialah pelajaran SaaS Berkuasa AI: Stripe + Pengesahan + Pengebilan + Penggunaan percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran SaaS Berkuasa AI: Stripe + Pengesahan + Pengebilan + Penggunaan, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus SaaS Berkuasa AI: Stripe + Pengesahan + Pengebilan + Penggunaan merangkumi sejumlah 4 pelajaran.
Melindungi Pintu Digital Anda
Bayangkan sebuah ruang istirahat VIP. Bukan semua orang boleh masuk begitu sahaja, bukan? Sesetengah bahagian aplikasi anda, seperti profil atau tetapan pengguna, adalah seperti ruang istirahat VIP itu. Bahagian tersebut mengandungi data sensitif atau membenarkan tindakan penting.
Bahagian ini dipanggil laluan dilindungi. Laluan tersebut memastikan hanya pengguna yang disahkan dan diberi kuasa boleh mengakses sumber tertentu atau melakukan operasi tertentu. Tanpanya, sesiapa sahaja berpotensi melihat atau mengubah data pengguna yang sensitif.
Pengawal Keselamatan API Anda: Perisian Tengah
Bagaimanakah kita melindungi laluan ini? Di sinilah perisian tengah digunakan!
Fungsi perisian tengah bertindak seperti pengawal keselamatan yang berdiri antara permintaan klien dengan pengendali laluan pelayan anda. Fungsi ini boleh memeriksa, mengubah suai atau menamatkan permintaan sebelum permintaan itu sampai ke destinasi akhir.
Anggaplah ia sebagai pusat pemeriksaan. Setiap permintaan mesti melaluinya, dan perisian tengah menentukan sama ada permintaan itu dibenarkan untuk diteruskan.
Aliran Perisian Tengah
Perisian tengah sesuai digunakan dalam kitaran permintaan-tindak balas. Apabila permintaan sampai ke pelayan anda, permintaan itu akan melalui setiap fungsi perisian tengah yang dikonfigurasikan, satu demi satu.
- Pintas: Perisian tengah memintas permintaan masuk.
- Proses: Ia melaksanakan logiknya (contohnya, pencatatan, pengesahan dan penghuraian data).
- Teruskan: Jika semua semakan berjaya, ia menggunakan fungsi khas (selalunya dipanggil
next()) untuk menyerahkan kawalan kepada perisian tengah seterusnya atau pengendali laluan akhir. - Sekat: Jika semakan gagal (contohnya, tiada kebenaran), ia boleh menghantar tindak balas secara langsung dan menghentikan permintaan daripada diteruskan.
Langkah Pertama Perisian Tengah
Mari lihat contoh asas. Berikut ialah perisian tengah Node.js Express ringkas yang mencatat permintaan. Perhatikan fungsi next() – fungsi ini penting untuk menyerahkan kawalan.
Cuba jalankan contoh ini dan lihat output konsol!
const express = require('express');
const app = express();
// Define our simple logging middleware
function requestLogger(req, res, next) {
console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
next(); // Crucial: pass control to the next handler
}
// Apply the middleware to all incoming requests
app.use(requestLogger);
// Define a simple route
app.get('/', (req, res) => {
res.send('Hello from the server!');
});
const PORT = 3000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));Mencari Token Pengesahan
Untuk pengesahan, perisian tengah kami perlu mencari JSON Web Token (JWT) yang dihantar oleh klien. JWT biasanya dihantar dalam pengepala Authorization bagi permintaan HTTP, menggunakan skema Bearer.
Formatnya adalah seperti ini: Authorization: Bearer YOUR_JWT_TOKEN_HERE
Tugas pertama perisian tengah kami ialah mengekstrak token ini daripada pengepala permintaan.
Menyemak Ketulenan Token
Setelah memperoleh token, kita perlu mengesahkannya. Proses ini melibatkan semakan tandatangannya menggunakan kunci rahsia yang digunakan untuk menandatanganinya. Jika tandatangan token sah, kita tahu bahawa token itu tidak telah diubah suai.
Beginilah cara anda mungkin mengesahkan token menggunakan pustaka biasa (seperti jsonwebtoken dalam Node.js). Dalam contoh ini, kita akan mensimulasikan token yang sah.
const jwt = require('jsonwebtoken'); // npm install jsonwebtoken
const SECRET_KEY = 'my_super_secret_key'; // Keep this secure in real apps!
const mockPayload = { id: 'user123', username: 'alice' };
// 1. Create a mock token (what a login endpoint would generate)
const mockToken = jwt.sign(mockPayload, SECRET_KEY, { expiresIn: '1h' });
console.log('Generated Token:', mockToken);
// 2. Verify the token in our middleware
jwt.verify(mockToken, SECRET_KEY, (err, user) => {
if (err) {
console.log('Token verification failed:', err.message);
} else {
console.log('Token is valid! User:', user);
// In a real middleware, you'd attach 'user' to req object
}
});
Menolak Akses
Bagaimana jika token tiada atau tidak sah? Perisian perantara kita mesti memberikan respons dengan ralat dan menghalang permintaan daripada sampai ke laluan yang dilindungi.
- Token Tiada: Jika tiada pengepala
Authorizationatau token ditemui, kembalikan status401 Unauthorized. - Token Tidak Sah: Jika token wujud tetapi tidak terbentuk dengan betul, telah tamat tempoh atau mempunyai tandatangan yang tidak sah, kembalikan status
403 Forbidden.
Ini amat penting untuk keselamatan!
Menyediakan Maklumat Pengguna
Jika JWT berjaya disahkan, ia mengandungi muatan dengan maklumat pengguna (seperti user ID, nama pengguna dan sebagainya). Perisian perantara kita boleh mengekstrak data ini dan melampirkannya pada objek permintaan.
Ini bermakna pengendali laluan seterusnya bagi laluan yang dilindungi boleh mengakses butiran pengguna yang telah disahkan secara terus tanpa perlu menghuraikan semula token.
Contoh: req.user = decodedPayload;
Perisian Perantara Pengesahan Lengkap
Berikut ialah persediaan Node.js Express lengkap dengan perisian perantara pengesahan kita. Perhatikan bahawa authenticateToken digunakan pada laluan /profile, menjadikannya terlindung.
Jalankan kod ini. Cuba akses /profile tanpa token, kemudian dengan token yang sah (daripada Scene 6).
const express = require('express');
const jwt = require('jsonwebtoken'); // npm install jsonwebtoken
const app = express();
const SECRET_KEY = 'my_super_secret_key'; // Use env vars in production!
// Middleware to authenticate JWT
function authenticateToken(req, res, next) {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1]; // Bearer TOKEN
if (token == null) {
return res.status(401).send('Access Denied: No token provided');
}
jwt.verify(token, SECRET_KEY, (err, user) => {
if (err) {
return res.status(403).send('Access Denied: Invalid token');
}
req.user = user; // Attach user payload to request
next(); // Pass to the next handler/route
});
}
// An unprotected public route
app.get('/public', (req, res) => {
res.send('This is a public route. No authentication needed.');
});
// A protected route
app.get('/profile', authenticateToken, (req, res) => {
res.json({
message: `Welcome to your profile, ${req.user.username}!`,
userId: req.user.id
});
});
const PORT = 3000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));Pemeriksaan Perisian Perantara
Pertimbangkan perisian perantara pengesahan yang direka untuk melindungi sesuatu laluan. Apakah tujuan utama memanggil next() dalam fungsi perisian perantara tersebut?
Ringkasan Pelajaran: Laluan Selamat
Tahniah! Dalam pelajaran ini, anda telah belajar untuk melindungi titik akhir API anda dengan laluan terlindung.
- Kita telah meneroka cara perisian perantara bertindak sebagai perantara dengan memeriksa permintaan sebelum permintaan tersebut sampai ke bahagian sensitif aplikasi anda.
- Anda telah melihat cara melaksanakan perisian perantara pengesahan untuk mengekstrak dan mengesahkan JWT daripada permintaan yang masuk.
- Kita telah membincangkan cara mengendalikan token yang tiada atau tidak sah dengan menghantar respons ralat yang sesuai (
401,403). - Akhir sekali, anda telah belajar melampirkan data pengguna yang telah disahkan pada objek permintaan dan menggunakan perisian perantara ini pada laluan tertentu, bagi memastikan hanya pengguna yang diberi kebenaran boleh mengaksesnya.
API anda kini jauh lebih selamat!
Pelajari SaaS Berkuasa AI: Stripe + Pengesahan + Pengebilan + Penggunaan dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Soalan Lazim
Adakah pelajaran “Laluan Dilindungi & Middleware” percuma?
Ya — teks penuh “Laluan Dilindungi & Middleware” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus SaaS Berkuasa AI: Stripe + Pengesahan + Pengebilan + Penggunaan, tingkat taraf kepada CoddyKit PRO. Kursus SaaS Berkuasa AI: Stripe + Pengesahan + Pengebilan + Penggunaan merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Laluan Dilindungi & Middleware”?
Pelajari cara melindungi titik akhir API dengan melaksanakan middleware yang mengesahkan JWT dan mengehadkan akses kepada pengguna yang disahkan. Anda berlatih SaaS Berkuasa AI: Stripe + Pengesahan + Pengebilan + Penggunaan menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan SaaS Berkuasa AI: Stripe + Pengesahan + Pengebilan + Penggunaan?
Tiada pengalaman terdahulu diperlukan. Pembelajaran SaaS Berkuasa AI: Stripe + Pengesahan + Pengebilan + Penggunaan di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Laluan Dilindungi & Middleware” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran SaaS Berkuasa AI: Stripe + Pengesahan + Pengebilan + Penggunaan ini?
Ya. Setiap pelajaran SaaS Berkuasa AI: Stripe + Pengesahan + Pengebilan + Penggunaan menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Pendaftaran Pengguna & Pencincangan
- Log Masuk & Penjanaan JWT
- Laluan Dilindungi & Middleware
- Tetapan Semula Kata Laluan dan Pengesahan E-mel