TypeScript में प्राधिकरण और प्रमाणीकरण: एक संपूर्ण गाइड

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

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

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

TypeScript में प्राधिकरण और प्रमाणीकरण: सिद्धांत से व्यवहार तक



आधुनिक वेब डेवलपमेंट में, एप्लिकेशन सुरक्षा एक आधारशिला है। TypeScript, JavaScript पर एक सख्ती से टाइप की गई परत के रूप में, प्रमाणीकरण (उपयोगकर्ता की पहचान सत्यापित करना) और प्राधिकरण (पहुँच अधिकारों की जाँच करना) की मजबूत प्रणाली बनाने के लिए शक्तिशाली उपकरण प्रदान करता है। इस लेख में, हम मुख्य अवधारणाओं, लोकप्रिय लाइब्रेरीज़ पर चर्चा करेंगे और TypeScript में एक कार्यशील उदाहरण लिखेंगे।



मूल अवधारणाएँ: प्रमाणीकरण बनाम प्राधिकरण



अक्सर इन शब्दों को भ्रमित किया जाता है। आइए स्पष्ट रूप से अलग करें:

  • प्रमाणीकरण (Authentication) — यह सत्यापित करने की प्रक्रिया है कि आप कौन हैं। उदाहरण के लिए, लॉगिन और पासवर्ड के माध्यम से या किसी तृतीय-पक्ष सेवा (Google, GitHub) के माध्यम से लॉगिन करना।
  • प्राधिकरण (Authorization) — यह सत्यापित करने की प्रक्रिया है कि आप क्या कर सकते हैं। उदाहरण के लिए, एडमिन पैनल तक पहुँच या पोस्ट हटाने की क्षमता।


TypeScript में, ये प्रक्रियाएँ middleware (मध्यवर्ती हैंडलर) के माध्यम से कार्यान्वित की जाती हैं, जो अनुरोध निष्पादित करने से पहले टोकन या सत्रों की जाँच करते हैं।



TypeScript के लिए लोकप्रिय लाइब्रेरीज़



TypeScript प्रोजेक्ट्स में प्राधिकरण और प्रमाणीकरण लागू करने के लिए, आमतौर पर निम्नलिखित का उपयोग किया जाता है:

  • jsonwebtoken — JWT (JSON Web Tokens) के साथ काम करना।
  • bcrypt — पासवर्ड हैशिंग।
  • passport (प्रकारों के साथ @types/passport) — Express के लिए लचीला middleware।
  • express-session — सर्वर पर सत्र प्रबंधन।
  • crypto — हैश के साथ काम करने के लिए Node.js का अंतर्निहित मॉड्यूल।


व्यावहारिक उदाहरण: TypeScript पर JWT प्रमाणीकरण



JWT के माध्यम से प्रमाणीकरण के साथ एक सरल REST API बनाने पर विचार करें। उदाहरण Express + TypeScript पर होगा।



चरण 1. निर्भरताएँ स्थापित करना

npm install express jsonwebtoken bcrypt dotenvnpm install -D typescript @types/express @types/jsonwebtoken @types/bcrypt ts-node nodemon


चरण 2. TypeScript कॉन्फ़िगरेशन (tsconfig.json)

{  "compilerOptions": {    "target": "ES2020",    "module": "commonjs",    "outDir": "./dist",    "rootDir": "./src",    "strict": true,    "esModuleInterop": true  }}


चरण 3. प्रमाणीकरण के लिए middleware बनाना

// src/middleware/auth.tsimport { Request, Response, NextFunction } from 'express';import jwt from 'jsonwebtoken';

interface UserPayload { id: string; email: string;}

// उपयोगकर्ता डेटा संग्रहीत करने के लिए Request इंटरफ़ेस का विस्तार करेंdeclare global { namespace Express { interface Request { user?: UserPayload; } }}

export const authenticate = ( req: Request, res: Response, next: NextFunction): void => { const authHeader = req.headers.authorization;

if (!authHeader || !authHeader.startsWith('Bearer ')) { res.status(401).json({ message: 'टोकन प्रदान नहीं किया गया' }); return; }

const token = authHeader.split(' ')[1];

try { const decoded = jwt.verify( token, process.env.JWT_SECRET || 'default_secret' ) as UserPayload; req.user = decoded; next(); } catch (error) { res.status(401).json({ message: 'अमान्य टोकन' }); }};


चरण 4. भूमिकाओं के आधार पर प्राधिकरण के लिए middleware

// src/middleware/authorize.tsimport { Request, Response, NextFunction } from 'express';

export const authorize = (...allowedRoles: string[]) => { return (req: Request, res: Response, next: NextFunction): void => { // मान लें कि प्रमाणीकरण के बाद भूमिका req.user में संग्रहीत है const userRole = (req as any).user?.role || 'user';

if (!allowedRoles.includes(userRole)) { res.status(403).json({ message: 'पहुँच निषिद्ध' });

अनुशंसाएँ