Node.js में प्राधिकरण और प्रमाणीकरण: पूर्ण गाइड
आधुनिक वेब डेवलपमेंट में, उपयोगकर्ता डेटा की सुरक्षा सर्वोच्च प्राथमिकता है। इस गाइड में, हम Node.js एप्लिकेशन में प्रमाणीकरण (उपयोगकर्ता की पहचान सत्यापित करना) और प्राधिकरण (पहुँच अधिकारों की जाँच) को लागू करने के लिए प्रमुख टूल और लाइब्रेरीज़ पर चर्चा करेंगे। आप सीखेंगे कि रूट सुरक्षा कैसे सेट करें, पासवर्ड हैश करें और एक्सेस टोकन के साथ कैसे काम करें।
1. मूल अवधारणाएँ
- प्रमाणीकरण — यह जाँचने की प्रक्रिया कि उपयोगकर्ता वही है जो वह होने का दावा करता है (आमतौर पर लॉगिन और पासवर्ड के माध्यम से)।
- प्राधिकरण — यह निर्धारित करना कि प्रमाणित उपयोगकर्ता के लिए कौन से संसाधन और क्रियाएँ उपलब्ध हैं।
- JWT (JSON Web Token) — JSON ऑब्जेक्ट के रूप में डेटा संचारित करने का एक कॉम्पैक्ट और स्व-निहित तरीका। इसका उपयोग एक्सेस टोकन बनाने के लिए किया जाता है।
- सत्र — सर्वर पर उपयोगकर्ता डेटा संग्रहीत करने की पारंपरिक विधि (आमतौर पर
express-sessionका उपयोग करके)।
2. Node.js के लिए प्रमुख लाइब्रेरीज़
2.1. bcrypt — पासवर्ड हैशिंग
पासवर्ड को कभी भी सादे टेक्स्ट में न रखें। bcrypt सॉल्ट के साथ सुरक्षित हैशिंग के लिए एक लाइब्रेरी है।
const bcrypt = require('bcrypt');const saltRounds = 10;
// पासवर्ड हैश करनाasync function hashPassword(password) { const salt = await bcrypt.genSalt(saltRounds); const hash = await bcrypt.hash(password, salt); return hash;}
// पासवर्ड जाँचनाasync function checkPassword(password, hash) { const match = await bcrypt.compare(password, hash); return match; // true या false}2.2. jsonwebtoken — JWT के साथ काम करना
jsonwebtoken लाइब्रेरी JWT टोकन बनाने और सत्यापित करने की अनुमति देती है। टोकन में आमतौर पर हेडर, पेलोड और हस्ताक्षर होते हैं।
const jwt = require('jsonwebtoken');const secretKey = 'आपकी-गुप्त-कुंजी';
// टोकन बनानाfunction generateToken(userId, role) { const payload = { userId, role }; const token = jwt.sign(payload, secretKey, { expiresIn: '1h' }); return token;}
// टोकन सत्यापित करना (middleware)function verifyToken(req, res, next) { const authHeader = req.headers['authorization']; const token = authHeader && authHeader.split(' ')[1]; // Bearer TOKEN if (!token) return res.status(401).json({ error: 'टोकन प्रदान नहीं किया गया' });
jwt.verify(token, secretKey, (err, decoded) => { if (err) return res.status(403).json({ error: 'अमान्य टोकन' }); req.user = decoded; next(); });}2.3. Passport.js — सार्वभौमिक प्रमाणीकरण
Passport.js Express के लिए एक middleware है जो 500 से अधिक रणनीतियों (लोकल, OAuth, JWT, Google, Facebook, आदि) का समर्थन करता है। लोकल रणनीति का उदाहरण:
const passport = require('passport');const LocalStrategy = require('passport-local').Strategy;const User = require('./models/User');
passport.use(new LocalStrategy( async (username, password, done) => { try { const user = await User.findOne({ username }); if (!user) return done(null, false, { message: 'उपयोगकर्ता नहीं मिला' }); const isValid = await bcrypt.compare(password, user.password); if (!isValid) return done(null, false, { message: 'गलत पासवर्ड' }); return done(null, user); } catch (err) { return done(err); } }));
// सीरियलाइज़ेशन और डीसीरियलाइज़ेशन (सत्रों के लिए)passport.serializeUser((user, done) => done(null, user.id));passport.deserializeUser(async (id, done) => { const user = await User.findById(id); done(null, user);});3. पूर्ण उदाहरण: पंजीकरण और लॉगिन
आइए सब कुछ एक सरल Express एप्लिकेशन में एक साथ रखें।
const express = पुस्तकालय में भी
Prometheus मेट्रिक्स C# (.NET) में: एकीकरण और कॉन्फ़िगरेशन
Hangfire C# (.NET) पूर्ण गाइड: उदाहरणों के साथ
Swift (iOS/macOS) में CSV के साथ कार्य: SwiftCSV लाइब्रेरी और पार्सिंग की मूल बातें
Swift के लिए WebSocket लाइब्रेरी: iOS/macOS के लिए Starscream