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

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

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

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

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



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



1. मूल अवधारणाएँ और अंतर

  • प्रमाणीकरण — यह जाँचने की प्रक्रिया है कि उपयोगकर्ता वही है जो वह होने का दावा करता है (लॉगिन + पासवर्ड, बायोमेट्रिक्स, OAuth)।
  • प्राधिकरण — यह निर्धारित करने की प्रक्रिया है कि प्रमाणित उपयोगकर्ता के लिए कौन से संसाधन और क्रियाएँ उपलब्ध हैं (भूमिकाएँ, पहुँच अधिकार)।

उदाहरण के लिए: उपयोगकर्ता ने सही पासवर्ड दर्ज किया (प्रमाणीकरण), लेकिन उसे दूसरों की पोस्ट हटाने की अनुमति नहीं है (प्राधिकरण)।



2. आवश्यक उपकरण और लाइब्रेरी

कार्यान्वयन के लिए हम उपयोग करेंगे:

  • bcrypt — पासवर्ड हैश करने के लिए
  • jsonwebtoken (JWT) — टोकन बनाने और सत्यापित करने के लिए
  • express + @types/express — सर्वर साइड
  • zod — इनपुट डेटा का सत्यापन


3. उपयोगकर्ता पंजीकरण (प्रमाणीकरण)

पंजीकरण के दौरान पासवर्ड कभी भी सादे पाठ में संग्रहीत नहीं किया जाता है। हैश बनाने के लिए bcrypt का उपयोग करें:



import bcrypt from 'bcrypt';import { z } from 'zod';

const registerSchema = z.object({ email: z.string().email(), password: z.string().min(8)});

async function registerUser(email: string, password: string) { const validated = registerSchema.parse({ email, password }); const saltRounds = 10; const hashedPassword = await bcrypt.hash(validated.password, saltRounds); // email + hashedPassword को डेटाबेस में सहेजें // await db.user.create({ data: { email, password: hashedPassword } }); return { success: true };}


4. सिस्टम में लॉगिन और JWT जारी करना

पासवर्ड की सफल जाँच के बाद, एक्सेस-टोकन जनरेट करें:



import jwt from 'jsonwebtoken';

const JWT_SECRET = process.env.JWT_SECRET!; // .env में अनिवार्य

async function loginUser(email: string, password: string) { // 1. ईमेल द्वारा डेटाबेस में उपयोगकर्ता खोजें // const user = await db.user.findUnique({ where: { email } }); // if (!user) throw new Error('User not found'); // 2. पासवर्ड की तुलना करें const isMatch = await bcrypt.compare(password, user.password); if (!isMatch) throw new Error('Invalid password'); // 3. JWT बनाएँ const token = jwt.sign( { userId: user.id, role: user.role }, JWT_SECRET, { expiresIn: '1h' } ); return { token, user: { id: user.id, email: user.email } };}


5. JWT सत्यापन के लिए मिडलवेयर (प्रमाणीकरण)

एक मिडलवेयर बनाएँ जो प्रत्येक सुरक्षित अनुरोध पर टोकन की जाँच करेगा:



import { Request, Response, NextFunction } from 'express';

interface AuthRequest extends Request { user?: { userId: string; role: string };}

export function authMiddleware(req: AuthRequest, res: Response, next: NextFunction) { const authHeader = req.headers.authorization; if (!authHeader?.startsWith('Bearer ')) { return res.status(401).json({ error: 'No token provided' }); } const token = authHeader.split(' ')[1]; try { const decoded = jwt.verify(token, JWT_SECRET) as { userId: string; role: string }; req.user = decoded; next(); } catch (err) { return res.status(403).json({ error: 'Invalid or expired token' }); }}


6. भूमिका-आधारित प्राधिकरण (RBAC)

एक मिड बनाएँ

अनुशंसाएँ