Advanced Routing (Protected + Role Based)

Advanced Routing in React.js (Protected Routes + Role Based Access)

React.js এ Routing সাধারণত React Router ব্যবহার করে করা হয়। কিন্তু একটি Professional Web App এ শুধু Basic Routing যথেষ্ট নয়। আপনাকে দরকার হয় Protected Route, Authentication Check, এবং Role Based Routing যাতে নির্দিষ্ট User নিজের Permission অনুযায়ী Page দেখতে পারে।


🔐 What is Protected Routing?

Protected Route মানে এমন Route যেটি শুধু logged-in user দেখতে পারবে। যদি User লগইন না করে থাকে, তাহলে তাকে Login Page এ Redirect করা হবে।

👉 Example Scenario:

  • Dashboard — only logged users
  • Admin Panel — only admin users
  • User Profile — only authenticated users

🔑 How to Create a Protected Route

নিচের কোডটি একটি Basic Protected Route Component:


import { Navigate } from "react-router-dom";

const ProtectedRoute = ({ children }) => {
    const isLoggedIn = localStorage.getItem("token");

    return isLoggedIn ? children : <Navigate to="/login" />;
};

export default ProtectedRoute;

Usage:


<Route 
  path="/dashboard" 
  element={
    <ProtectedRoute>
        <Dashboard />
    </ProtectedRoute>
  } 
/>

এখন যেকোনো User /dashboard এ যেতে চাইলে আগে তার Token চেক হবে।


🎭 What is Role Based Routing?

Role Based Routing মানে Application এ বিভিন্ন User Role থাকবে যেমনঃ Admin, Instructor, Student, Seller, Editor ইত্যাদি। প্রতিটি Role তাদের নিজস্ব Access অনুযায়ী কিছু Page দেখতে পারবে।

Example:

  • Admin → Access all pages
  • Editor → Manage Blogs
  • Student → Access Courses

🛡 Create Role Based Protected Route

নিচের Component টি Role চেক করে রুট Show করবে:


import { Navigate } from "react-router-dom";

const RoleRoute = ({ children, allowedRoles }) => {
    const user = JSON.parse(localStorage.getItem("user"));

    if (!user) {
        return <Navigate to="/login" />;
    }

    return allowedRoles.includes(user.role)
        ? children
        : <Navigate to="/unauthorized" />;
};

export default RoleRoute;

Usage Example:


<Route 
  path="/admin" 
  element={
    <RoleRoute allowedRoles={["admin"]}>
        <AdminPanel />
    </RoleRoute>
  } 
/>

<Route 
  path="/instructor" 
  element={
    <RoleRoute allowedRoles={["admin","instructor"]}>
        <InstructorDashboard />
    </RoleRoute>
  } 
/>

🧠 Where to Store Token & Role?

সাধারণত দুই জায়গায় store করা হয়:

  • localStorage → Simple projects
  • httpOnly Cookie → Secure production apps

🚀 Full Routing Setup Example


import { BrowserRouter, Routes, Route } from "react-router-dom";
import ProtectedRoute from "./ProtectedRoute";
import RoleRoute from "./RoleRoute";

export default function App() {
  return (
    <BrowserRouter>
      <Routes>

        <Route path="/" element={<Home />} />
        <Route path="/login" element={<Login />} />

        <Route 
            path="/dashboard" 
            element={
              <ProtectedRoute>
                  <Dashboard />
              </ProtectedRoute>
            } 
        />

        <Route 
            path="/admin" 
            element={
              <RoleRoute allowedRoles={["admin"]}>
                  <AdminPanel />
              </RoleRoute>
            } 
        />

        <Route path="/unauthorized" element={<Unauthorized />} />

      </Routes>
    </BrowserRouter>
  );
}

⚠ Common Mistakes (And Fixes)

  • ❌ Token null হলে error → Always check user exists
  • ❌ User logout করলে সেই roles থেকে না গেছে → Clear localStorage
  • ❌ User role tamper → Backend must validate role

🎯 Final Tips

  • Always validate roles from backend
  • Never store sensitive info directly in localStorage
  • Create separate Routes for admin, instructor, student dashboard
  • Use JWT for secure authentication

📌 Conclusion

React.js এ Advanced Routing শেখা একটি Professional Web App তৈরি করার জন্য অত্যন্ত গুরুত্বপূর্ণ। Protected Route, Role Based Route এবং JWT Authentication মিলিয়ে আপনি নিরাপদ ও বড় অ্যাপ্লিকেশন তৈরি করতে পারবেন।

👼 Quiz
/

লোড হচ্ছে...

Interview Questions:

1. Protected Route কী?

Protected Route এমন একটি route যা শুধুমাত্র authenticated user-দের জন্য অ্যাক্সেসযোগ্য। সাধারণত token বা login status চেক করে এটি কাজ করে।

2. Role Based Routing কীভাবে কাজ করে?

Role Based Routing এ ইউজারের role (যেমন Admin বা User) চেক করে নির্দিষ্ট route এ প্রবেশের অনুমতি দেওয়া হয়।