JavaScript (Node.js) में प्रमाणीकरण और अधिकारिता: पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

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 पर चल रहा है'));

अनुशंसाएँ