JavaScript (Node.js) में प्रमाणीकरण और अधिकारिता
आधुनिक वेब डेवलपमेंट में, उपयोगकर्ता डेटा की सुरक्षा सर्वोच्च प्राथमिकता है। इस गाइड में, हम Node.js वातावरण में प्रमाणीकरण (पहचान सत्यापन) और अधिकारिता (एक्सेस नियंत्रण) की मुख्य अवधारणाओं को समझेंगे। आप सीखेंगे कि रजिस्ट्रेशन, पासवर्ड लॉगिन, JWT टोकन का उपयोग और रूट सुरक्षा कैसे लागू करें।
1. मूल अवधारणाएँ
- प्रमाणीकरण — उपयोगकर्ता की पहचान सत्यापित करने की प्रक्रिया (जैसे, ईमेल + पासवर्ड)।
- अधिकारिता — यह जाँचना कि उपयोगकर्ता को कोई कार्य करने का अधिकार है या नहीं (जैसे, admin/user भूमिका)।
- JWT (JSON Web Token) — डेटा को टोकन के रूप में स्थानांतरित करने का एक कॉम्पैक्ट तरीका, जिसका उपयोग अक्सर सत्रों के लिए किया जाता है।
- पासवर्ड हैशिंग — सुरक्षा के लिए अनिवार्य आवश्यकता (bcrypt, argon2)।
2. डिपेंडेंसी इंस्टॉल करना
इसके लिए हमें निम्नलिखित npm पैकेजों की आवश्यकता होगी:
npm install express bcryptjs jsonwebtoken dotenv
express— वेब फ्रेमवर्कbcryptjs— पासवर्ड हैशिंग के लिएjsonwebtoken— JWT बनाने और सत्यापित करने के लिएdotenv— गुप्त कुंजियों के प्रबंधन के लिए
3. सरल रजिस्ट्रेशन और पासवर्ड हैशिंग
एक बेसिक यूज़र मॉडल बनाते हैं (उदाहरण के लिए मेमोरी में ऐरे का उपयोग करें, वास्तविक प्रोजेक्ट में इसे डेटाबेस से बदलें):
const bcrypt = require('bcryptjs');
const users = []; // डेटाबेस का अनुकरण
async function registerUser(email, password) {
const salt = await bcrypt.genSalt(10);
const hashedPassword = await bcrypt.hash(password, salt);
users.push({ email, password: hashedPassword });
console.log('उपयोगकर्ता पंजीकृत:', email);
}
// उदाहरण कॉल:
registerUser('user@example.com', 'myPassword123');
4. JWT के साथ प्रमाणीकरण
सफल लॉगिन के बाद, हम क्लाइंट को एक JWT टोकन जारी करते हैं। टोकन में उपयोगकर्ता ID और समाप्ति तिथि होती है।
const jwt = require('jsonwebtoken');
require('dotenv').config();
const JWT_SECRET = process.env.JWT_SECRET || 'your-secret-key';
function loginUser(email, password) {
const user = users.find(u => u.email === email);
if (!user) return null;
const isValid = bcrypt.compareSync(password, user.password);
if (!isValid) return null;
// टोकन बनाएँ
const token = jwt.sign(
{ userId: user.email, role: 'user' },
JWT_SECRET,
{ expiresIn: '1h' }
);
return token;
}
5. रूट सुरक्षा के लिए Middleware
एक मिडलवेयर बनाते हैं जो Authorization हेडर में JWT की जाँच करता है:
function authMiddleware(req, res, next) {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1]; // Bearer TOKEN
if (!token) {
return res.status(401).json({ message: 'टोकन प्रदान नहीं किया गया' });
}
try {
const decoded = jwt.verify(token, JWT_SECRET);
req.user = decoded; // उपयोगकर्ता डेटा को अनुरोध में भेजें
next();
} catch (err) {
return res.status(403).json({ message: 'अमान्य टोकन' });
}
}
6. Express में उपयोग का उदाहरण
सब कुछ एक साथ जोड़ते हैं — लॉगिन और सुरक्षित प्रोफ़ाइल के लिए रूट बनाते हैं:
const express = require('express');
const app = express();
app.use(express.json());
// लॉगिन रूट
app.post('/api/login', (req, res) => {
const { email, password } = req.body;
const token = loginUser(email, password);
if (!token) {
return res.status(401).json({ message: 'गलत क्रेडेंशियल्स' });
}
res.json({ token });
});
// सुरक्षित रूट
app.get('/api/profile', authMiddleware, (req, res) => {
res.json({ message: 'एक्सेस अनुमत', user: req.user });
});
app.listen(3000, () => console.log('सर्वर पोर्ट 3000 पर चल रहा है')); पुस्तकालय में भी
C# (.NET) का उपयोग करके SmtpClient और MailKit के साथ ईमेल भेजना
PHP अनुप्रयोग निगरानी: उपकरणों और पुस्तकालयों के लिए पूर्ण मार्गदर्शिका
Kotlin में तिथियों के साथ कार्य करना: लाइब्रेरीज़ और टूल्स का अवलोकन
Go (Golang) के लिए Gorilla WebSocket लाइब्रेरी — पूर्ण गाइड
Rust में PDF रिपोर्ट जनरेशन: printpdf लाइब्रेरी