Next.js 15 पूर्ण-स्टैक वेब ऐप · पाठ

भूमिका-आधारित पहुँच नियंत्रण (RBAC)

उपयोगकर्ता भूमिकाओं और अनुमतियों का मॉडल बनाएँ, उन्हें सत्र में संग्रहित करें और Next.js 15 ऐप में सर्वर घटकों, रूट हैंडलरों तथा मिडलवेयर पर भूमिका-जाँच लागू करें।

पाठ 4, कुल 4 में से13 चरण

भूमिका-आधारित पहुँच नियंत्रण (RBAC), CoddyKit पर Next.js 15 पूर्ण-स्टैक वेब ऐप का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Next.js 15 पूर्ण-स्टैक वेब ऐप सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Next.js 15 पूर्ण-स्टैक वेब ऐप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

लॉगिन से आगे प्राधिकरण

Authentication यह बताता है कि आप कौन हैं; authorization यह तय करता है कि आप क्या कर सकते हैं। Role-Based Access Control (RBAC) प्रत्येक उपयोगकर्ता को एक या अधिक भूमिकाएँ देता है और व्यक्तियों के बजाय भूमिकाओं को अनुमतियाँ प्रदान करता है।

  • भूमिकाएँ: admin, editor, viewer
  • अनुमतियाँ भूमिका से निर्धारित होती हैं।

JWT में भूमिका संग्रहीत करना

NextAuth के साथ, jwt कॉलबैक में भूमिका को टोकन से जोड़ें, ताकि डेटाबेस को बार-बार पढ़े बिना वह हर अनुरोध के साथ भेजी जाए।

callbacks: {
  async jwt({ token, user }) {
    if (user) token.role = user.role;
    return token;
  },
  async session({ session, token }) {
    session.user.role = token.role;
    return session;
  },
}

अनुमतियों का मानचित्र

प्रत्येक भूमिका क्या कर सकती है, इसे एक ही स्थान पर व्यवस्थित करें। एक सरल मानचित्र जाँचों को सुसंगत और ऑडिट करना आसान बनाता है।

export const permissions = {
  admin: ['read', 'write', 'delete'],
  editor: ['read', 'write'],
  viewer: ['read'],
};

export function can(role, action) {
  return permissions[role]?.includes(action) ?? false;
}

सहायक की जाँच करना

can सहायक केवल शुद्ध तर्क है, इसलिए यह कहीं भी चल सकता है। यहाँ एक स्व-निहित जाँच दी गई है।

const permissions = {
  admin: ['read', 'write', 'delete'],
  editor: ['read', 'write'],
  viewer: ['read'],
};
function can(role, action) {
  return permissions[role]?.includes(action) ?? false;
}
console.log(can('editor', 'write'));
console.log(can('viewer', 'delete'));

सर्वर कंपोनेंट की सुरक्षा करना

सर्वर पर session पढ़ें और आवश्यक भूमिका न रखने वाले उपयोगकर्ताओं को संवेदनशील UI रेंडर होने से पहले रीडायरेक्ट करें।

import { auth } from '@/auth';
import { redirect } from 'next/navigation';

export default async function AdminPage() {
  const session = await auth();
  if (session?.user.role !== 'admin') redirect('/');
  return <h1>Admin Dashboard</h1>;
}

रूट हैंडलर की सुरक्षा करना

API रूट हैंडलर को भी भूमिकाएँ लागू करनी चाहिए। क्लाइंट पर कभी भरोसा न करें। भूमिका अपर्याप्त होने पर 403 लौटाएँ।

import { auth } from '@/auth';
import { can } from '@/lib/rbac';

export async function DELETE(req) {
  const session = await auth();
  if (!can(session?.user.role, 'delete')) {
    return new Response('Forbidden', { status: 403 });
  }
  return Response.json({ ok: true });
}

मिडलवेयर में भूमिका जाँच

मिडलवेयर पूरे रूट समूहों को आरंभ में ही रोक सकता है। एडमिन प्रीफ़िक्स से मिलान करें और टोकन की भूमिका सत्यापित करें।

import { NextResponse } from 'next/server';

export function middleware(req) {
  const role = req.cookies.get('role')?.value;
  if (req.nextUrl.pathname.startsWith('/admin') && role !== 'admin') {
    return NextResponse.redirect(new URL('/login', req.url));
  }
  return NextResponse.next();
}

export const config = { matcher: ['/admin/:path*'] };

सुरक्षा की कई परतें

जाँचों को कई परतों पर लागू करें। मिडलवेयर तेज़ पहली बाधा देता है, लेकिन डेटा को वास्तव में छूने वाले सर्वर कंपोनेंट या रूट हैंडलर में हमेशा दोबारा सत्यापित करें।

  • मिडलवेयर: मोटे स्तर की रूटिंग बाधा।
  • सर्वर कंपोनेंट / हैंडलर: निर्णायक जाँच।

UI को शर्त के आधार पर छिपाना

जिन नियंत्रणों का उपयोग उपयोगकर्ता नहीं कर सकते, उन्हें छिपाएँ; लेकिन याद रखें कि UI छिपाना सुविधा है, सुरक्षा नहीं। सर्वर को अनधिकृत कार्रवाइयों को फिर भी अस्वीकार करना चाहिए।

export default async function Toolbar() {
  const session = await auth();
  return (
    <div>
      {can(session?.user.role, 'delete') && <DeleteButton />}
    </div>
  );
}

एकाधिक भूमिकाएँ और स्कोप

वास्तविक ऐप अक्सर किसी उपयोगकर्ता को कई भूमिकाएँ या सूक्ष्म स्तर के स्कोप देते हैं। एक array संग्रहीत करें और सदस्यता की जाँच करें। इससे आगे चलकर अनुमति-आधारित (ABAC) प्रणालियों तक विस्तार करना आसान होता है।

function hasRole(userRoles, required) {
  return userRoles.some((r) => r === required);
}
console.log(hasRole(['editor', 'viewer'], 'editor'));

आम गलतियाँ

इन RBAC गलतियों से बचें:

  • क्लाइंट के body से भेजी गई भूमिका पर भरोसा करना।
  • भूमिकाओं की जाँच केवल UI में करना।
  • भूमिका बदलने के बाद JWT फिर से जारी करना भूल जाना।
  • केंद्रीय मानचित्र के बजाय भूमिका स्ट्रिंग को सीधे लिख देना।

त्वरित जाँच

केवल एडमिन को कोई रिकॉर्ड हटाने की अनुमति लागू करने का निर्णायक स्थान कौन-सा है?

पुनरावलोकन

आपने शुरू से अंत तक RBAC लागू किया:

  • NextAuth कॉलबैक के माध्यम से JWT और session में भूमिका संग्रहीत की।
  • can() सहायक के साथ अनुमतियों को एक ही स्थान पर व्यवस्थित किया।
  • सर्वर कंपोनेंट, रूट हैंडलर और मिडलवेयर को सुरक्षित किया।
  • सुरक्षा की कई परतें लागू कीं और क्लाइंट पर भरोसा करने की गलतियों से बचा।
शुरुआत निःशुल्क

एआई शिक्षक के साथ TypeScript सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “भूमिका-आधारित पहुँच नियंत्रण (RBAC)” पाठ निःशुल्क है?

हाँ — Next.js 15 पूर्ण-स्टैक वेब ऐप अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “भूमिका-आधारित पहुँच नियंत्रण (RBAC)” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Next.js 15 पूर्ण-स्टैक वेब ऐप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“भूमिका-आधारित पहुँच नियंत्रण (RBAC)” में मैं क्या सीखूँगा?

उपयोगकर्ता भूमिकाओं और अनुमतियों का मॉडल बनाएँ, उन्हें सत्र में संग्रहित करें और Next.js 15 ऐप में सर्वर घटकों, रूट हैंडलरों तथा मिडलवेयर पर भूमिका-जाँच लागू करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Next.js 15 पूर्ण-स्टैक वेब ऐप का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Next.js 15 पूर्ण-स्टैक वेब ऐप शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Next.js 15 पूर्ण-स्टैक वेब ऐप शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“भूमिका-आधारित पहुँच नियंत्रण (RBAC)” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Next.js 15 पूर्ण-स्टैक वेब ऐप पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Next.js 15 पूर्ण-स्टैक वेब ऐप पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. NextAuth.js का एकीकरण
  2. सेशन प्रबंधन और JWT
  3. मिडलवेयर और पहुँच नियंत्रण
  4. भूमिका-आधारित पहुँच नियंत्रण (RBAC)
← Next.js 15 पूर्ण-स्टैक वेब ऐप पर वापस जाएँ