React Academy · पाठ

सुरक्षित रूट और प्रमाणीकरण गार्ड

रैपर कंपोनेंट या लोडर-आधारित गार्ड से अप्रमाणित उपयोगकर्ताओं को लॉगिन पर रीडायरेक्ट करें।

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

सुरक्षित रूट और प्रमाणीकरण गार्ड, CoddyKit पर React Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह React Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। React Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

रूट की सुरक्षा क्यों करें

कुछ पृष्ठ (डैशबोर्ड, प्रोफ़ाइल, एडमिन) केवल प्रमाणित उपयोगकर्ताओं के लिए सुलभ होने चाहिए। React Router दो तरीके देता है: रैपर कॉम्पोनेंट और लोडर-आधारित सुरक्षा।

प्रमाणीकरण स्थिति का स्वरूप

सबसे पहले, एक प्रमाणीकरण संदर्भ स्थापित कीजिए, जिसे कॉम्पोनेंट यह जानने के लिए पढ़ सकें कि उपयोगकर्ता लॉग इन है या नहीं।

const AuthContext = React.createContext(null);

function AuthProvider({ children }) {
  const [user, setUser] = useState(null);
  const login = async (creds) => { const u = await apiLogin(creds); setUser(u); };
  const logout = () => setUser(null);
  return (
    <AuthContext.Provider value={{ user, login, logout }}>
      {children}
    </AuthContext.Provider>
  );
}

export const useAuth = () => useContext(AuthContext);

रैपर कॉम्पोनेंट सुरक्षा

एक PrivateRoute कॉम्पोनेंट बनाइए, जो प्रमाणीकरण जाँचता है और उपयोगकर्ता के प्रमाणित न होने पर लॉगिन पर रीडायरेक्ट करता है।

import { Navigate, Outlet } from 'react-router-dom';

function PrivateRoute() {
  const { user } = useAuth();
  if (!user) return <Navigate to="/login" replace />;
  return <Outlet />;
}

// Usage in router:
{ element: <PrivateRoute />, children: [
  { path: '/dashboard', element: <Dashboard /> },
]}

रीडायरेक्ट URL सुरक्षित रखना

कोशिश किए गए URL को सुरक्षित रखिए, ताकि लॉगिन के बाद उपयोगकर्ता को वापस वहाँ भेज सकें। इसे Navigate कॉम्पोनेंट के state के माध्यम से भेजिए।

function PrivateRoute() {
  const { user } = useAuth();
  const location = useLocation();
  if (!user) {
    return <Navigate to="/login" state={{ from: location }} replace />;
  }
  return <Outlet />;
}

// In login handler:
const location = useLocation();
const from = location.state?.from?.pathname || '/';
navigate(from, { replace: true });

लोडर-आधारित सुरक्षा (डेटा राउटर)

डेटा राउटर API में रूट के loader में प्रमाणीकरण जाँच जोड़िए। उपयोगकर्ता के अप्रमाणित होने पर redirect throw कीजिए।

import { redirect } from 'react-router-dom';

function requireAuth() {
  const token = localStorage.getItem('token');
  if (!token) throw redirect('/login');
  return token;
}

const router = createBrowserRouter([
  {
    path: '/dashboard',
    loader: requireAuth,
    element: <Dashboard />,
  },
]);

भूमिका-आधारित सुरक्षा

भूमिकाओं की जाँच करने के लिए सुरक्षा व्यवस्था को विस्तृत कीजिए। यदि उपयोगकर्ता के पास आवश्यक भूमिका न हो, तो अनधिकृत पृष्ठ पर रीडायरेक्ट कीजिए।

function AdminRoute() {
  const { user } = useAuth();
  if (!user) return <Navigate to="/login" replace />;
  if (user.role !== 'admin') return <Navigate to="/unauthorized" replace />;
  return <Outlet />;
}

प्रमाणीकरण जाँच के दौरान लोडिंग स्थिति

यदि प्रमाणीकरण स्थिति async रूप से लोड होती है (जैसे, सर्वर से), तो जाँच लंबित रहने के दौरान स्पिनर दिखाइए, ताकि लॉगिन पृष्ठ थोड़ी देर के लिए दिखाई न दे।

function PrivateRoute() {
  const { user, isLoading } = useAuth();
  if (isLoading) return <Spinner />;
  if (!user) return <Navigate to="/login" replace />;
  return <Outlet />;
}

एक साथ कई रूट की सुरक्षा

सभी सुरक्षित रूट को एक ही PrivateRoute रैपर के अंतर्गत समूहित कीजिए, ताकि प्रत्येक रूट पर अलग-अलग सुरक्षा व्यवस्था दोहरानी न पड़े।

const router = createBrowserRouter([
  { path: '/login', element: <Login /> },
  {
    element: <PrivateRoute />,
    children: [
      { path: '/dashboard', element: <Dashboard /> },
      { path: '/profile', element: <Profile /> },
      { path: '/settings', element: <Settings /> },
    ],
  },
]);

टोकन की समय-सीमा समाप्त होने का प्रबंधन

सुरक्षा व्यवस्था या वैश्विक इंटरसेप्टर के अंदर टोकन की समय-सीमा जाँचिए और समय-सीमा समाप्त होने पर उपयोगकर्ता को लॉग आउट करके लॉगिन पर रीडायरेक्ट कीजिए।

function isTokenValid(token) {
  const payload = JSON.parse(atob(token.split('.')[1]));
  return payload.exp * 1000 > Date.now();
}

function requireAuth() {
  const token = localStorage.getItem('token');
  if (!token || !isTokenValid(token)) throw redirect('/login');
  return token;
}

रिफ़्रेश टोकन प्रवाह

401 के बाद रीडायरेक्ट करने से पहले टोकन रिफ़्रेश करने का प्रयास कीजिए। रिफ़्रेश भी विफल होने पर ही लॉगिन पर रीडायरेक्ट कीजिए।

async function requireAuth() {
  let token = localStorage.getItem('token');
  if (!token || isExpired(token)) {
    token = await refreshToken();
    if (!token) throw redirect('/login');
    localStorage.setItem('token', token);
  }
  return token;
}

रीलोड के दौरान प्रमाणीकरण सुरक्षित रखना

प्रमाणीकरण टोकन को localStorage या HttpOnly कुकी में सुरक्षित रखिए। ऐप लोड होने पर सुरक्षित रूट रेंडर करने से पहले प्रमाणीकरण स्थिति को फिर से लोड कीजिए।

त्वरित जाँच

React Router में लोडर-आधारित प्रमाणीकरण सुरक्षा का उपयोग करते समय, अप्रमाणित उपयोगकर्ता को रीडायरेक्ट करने के लिए आपको क्या throw करना चाहिए?

पुनरावलोकन

PrivateRoute रैपर में <Outlet /> का उपयोग करके या redirect() throw करने वाले लोडर से रूट की सुरक्षा कीजिए। इच्छित URL को नेविगेशन स्थिति में सुरक्षित रखिए, थोड़ी देर के लिए पृष्ठ दिखने से बचने के लिए लोडिंग स्थितियों को संभालिए और दोहराव से बचने के लिए सुरक्षित रूट को समूहित कीजिए।

शुरुआत निःशुल्क

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

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

पाठ्यक्रम
88
पाठ
324

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

क्या “सुरक्षित रूट और प्रमाणीकरण गार्ड” पाठ निःशुल्क है?

हाँ—“सुरक्षित रूट और प्रमाणीकरण गार्ड” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और React Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। React Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“सुरक्षित रूट और प्रमाणीकरण गार्ड” में मैं क्या सीखूँगा?

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

क्या React Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर React Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“सुरक्षित रूट और प्रमाणीकरण गार्ड” पाठ पूरा करने में कितना समय लगता है?

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

क्या मैं इस React Academy पाठ में कोड लिख और चला सकता हूँ?

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

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

  1. नेस्टेड रूट और आउटलेट लेआउट
  2. लोडर और ऐक्शन (डेटा राउटर API)
  3. सुरक्षित रूट और प्रमाणीकरण गार्ड
  4. URL सर्च पैरामीटर में स्टेट प्रबंधित करना
← React Academy पर वापस जाएँ