"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > Next.js में RBAC प्राधिकरण कैसे जोड़ें

Next.js में RBAC प्राधिकरण कैसे जोड़ें

2024-11-04 को प्रकाशित
ब्राउज़ करें:164

How to Add RBAC Authorization in Next.js

भूमिका-आधारित पहुंच नियंत्रण (आरबीएसी) आधुनिक वेब अनुप्रयोगों में एक महत्वपूर्ण विशेषता है, जो प्रशासकों को सिस्टम के भीतर उनकी भूमिकाओं के आधार पर उपयोगकर्ता अनुमतियों को प्रबंधित करने में सक्षम बनाता है। नेक्स्ट.जेएस एप्लिकेशन में आरबीएसी को लागू करने में कुछ प्रमुख चरण शामिल हैं: भूमिकाओं और अनुमतियों को परिभाषित करना, इन्हें प्रमाणीकरण के साथ एकीकृत करना और अपने एप्लिकेशन में पहुंच नियंत्रण लागू करना। यह मार्गदर्शिका आपको Next.js एप्लिकेशन में RBAC प्राधिकरण जोड़ने की प्रक्रिया के बारे में बताएगी।


1. आरबीएसी को समझना

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

2. अपना अगला.जेएस प्रोजेक्ट सेट करना

यदि आपने पहले से नहीं किया है, तो Next.js प्रोजेक्ट बनाकर शुरुआत करें:

npx create-next-app@latest my-rbac-app
cd my-rbac-app

3. प्रमाणीकरण जोड़ना

आरबीएसी लागू करने से पहले, आपको उपयोगकर्ताओं की पहचान करने के लिए एक प्रमाणीकरण तंत्र की आवश्यकता है। Next.js अंतर्निहित प्रमाणीकरण के साथ नहीं आता है, इसलिए आप NextAuth.js या Firebase प्रमाणीकरण जैसी लाइब्रेरी का उपयोग कर सकते हैं। यहां NextAuth.js की स्थापना का एक संक्षिप्त अवलोकन दिया गया है:

  1. NextAuth.js स्थापित करें:
   npm install next-auth
  1. प्रमाणीकरण के लिए एपीआई रूट बनाएं:

अपने पेज/एपीआई निर्देशिका में, [...nextauth].js:
नाम की एक फ़ाइल बनाएं

   // pages/api/auth/[...nextauth].js
   import NextAuth from 'next-auth';
   import CredentialsProvider from 'next-auth/providers/credentials';

   export default NextAuth({
     providers: [
       CredentialsProvider({
         async authorize(credentials) {
           // Here you should fetch and verify user credentials from your database
           const user = { id: 1, name: 'John Doe', email: '[email protected]', role: 'admin' };
           if (user) {
             return user;
           } else {
             return null;
           }
         }
       })
     ],
     pages: {
       signIn: '/auth/signin',
     },
     callbacks: {
       async session({ session, token }) {
         session.user.role = token.role;
         return session;
       },
       async jwt({ token, user }) {
         if (user) {
           token.role = user.role;
         }
         return token;
       }
     }
   });
  1. साइन-इन पेज जोड़ें:

pages/auth/signin.js पर एक सरल साइन-इन पेज बनाएं:

   // pages/auth/signin.js
   import { signIn } from 'next-auth/react';

   export default function SignIn() {
     return (
       

Sign In

); }

4. भूमिकाएं और अनुमतियां परिभाषित करना

अपने एप्लिकेशन में भूमिकाएं और अनुमतियां परिभाषित करें। आप इसे केंद्रीय कॉन्फ़िगरेशन फ़ाइल में या सीधे अपने कोड के भीतर कर सकते हैं। यहां भूमिकाओं और अनुमतियों को परिभाषित करने का एक सरल उदाहरण दिया गया है:

// lib/roles.js
export const ROLES = {
  ADMIN: 'admin',
  EDITOR: 'editor',
  VIEWER: 'viewer',
};

export const PERMISSIONS = {
  [ROLES.ADMIN]: ['view_dashboard', 'edit_content', 'delete_content'],
  [ROLES.EDITOR]: ['view_dashboard', 'edit_content'],
  [ROLES.VIEWER]: ['view_dashboard'],
};

5. आरबीएसी लागू करना

RBAC तर्क को अपने Next.js पृष्ठों और API मार्गों में एकीकृत करें। भूमिकाओं के आधार पर पहुंच को प्रतिबंधित करने का तरीका यहां बताया गया है:

  1. पेजों की सुरक्षा:

अपने संरक्षित पृष्ठों को लपेटने के लिए एक उच्च-क्रम घटक (HOC) बनाएं:

   // lib/withAuth.js
   import { useSession, signIn } from 'next-auth/react';
   import { ROLES } from './roles';

   export function withAuth(Component, allowedRoles) {
     return function ProtectedPage(props) {
       const { data: session, status } = useSession();

       if (status === 'loading') return 

Loading...

; if (!session || !allowedRoles.includes(session.user.role)) { signIn(); return null; } return ; }; }

अपने पृष्ठों में इस HOC का उपयोग करें:

   // pages/admin.js
   import { withAuth } from '../lib/withAuth';
   import { ROLES } from '../lib/roles';

   function AdminPage() {
     return 
Welcome, Admin!
; } export default withAuth(AdminPage, [ROLES.ADMIN]);
  1. एपीआई मार्गों की सुरक्षा:

आप उपयोगकर्ता भूमिकाओं की जांच करके एपीआई मार्गों की सुरक्षा भी कर सकते हैं:

   // pages/api/protected-route.js
   import { getSession } from 'next-auth/react';
   import { ROLES } from '../../lib/roles';

   export default async function handler(req, res) {
     const session = await getSession({ req });

     if (!session || !ROLES.ADMIN.includes(session.user.role)) {
       return res.status(403).json({ message: 'Forbidden' });
     }

     res.status(200).json({ message: 'Success' });
   }

6. परीक्षण और शोधन

यह सुनिश्चित करने के लिए कि अनुमतियाँ और भूमिकाएँ सही ढंग से लागू की गई हैं, अपने आरबीएसी कार्यान्वयन का पूरी तरह से परीक्षण करें। यह पुष्टि करने के लिए विभिन्न भूमिकाओं का परीक्षण करें कि पहुंच प्रतिबंध अपेक्षा के अनुरूप काम कर रहे हैं।

निष्कर्ष

नेक्स्ट.जेएस एप्लिकेशन में रोल-बेस्ड एक्सेस कंट्रोल (आरबीएसी) को एकीकृत करने में प्रमाणीकरण स्थापित करना, भूमिकाओं और अनुमतियों को परिभाषित करना और इन भूमिकाओं को आपके पूरे एप्लिकेशन में लागू करना शामिल है। इस गाइड में उल्लिखित चरणों का पालन करके, आप उपयोगकर्ता पहुंच को प्रभावी ढंग से प्रबंधित कर सकते हैं और यह सुनिश्चित कर सकते हैं कि आपका Next.js एप्लिकेशन सुरक्षित और उपयोगकर्ता के अनुकूल दोनों है।
4जी सिम कार्ट कैमरा

विज्ञप्ति वक्तव्य यह लेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/saman_sarbari_22e7e9081be/how-to-add-rbac-authorization-in-nextjs-3ll6?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.com से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3