Protecting Routes
Middleware, EARLY, CHECK, hai (JITNA, JALDI, POSSIBLE, ho, UNAUTHENTICATED, users, ko, REDIRECT, karna). Server, Component, level, PAR, bhi, EK, CHECK, RAKHNA, GOOD, PRACTICE, hai — "DEFENSE, IN, DEPTH".
Server, Component, mein, session/auth, CHECK, karके, redirect() (next/navigation, se) CALL, kiya, ja, sakta hai — YE, ENSURE, karta hai, ki, PAGE, ka, CONTENT, KABHI, UNAUTHORIZED, user, ko, na, dikhe.
import { redirect } from "next/navigation";
import { auth } from "@/auth";
export default async function DashboardPage() {
const session = await auth();
if (!session) {
redirect("/login");
}
return <div>Welcome, {session.user.name}</div>;
}- Middleware = EARLY, check, unauthenticated, users, ko, JALDI, redirect
- Server component, level, PAR, bhi, check, rakhna, "defense, in, depth" hai
- redirect(), se, unauthorized, users, ko, PROTECTED, content, dikhne, se, ROKA, jaata, hai
Ek, layout.js, (jaise, app/dashboard/layout.js) mein, auth, check, RAKHNE, se, USKE, SAARE, NESTED, routes, AUTOMATICALLY, PROTECTED, ho, jaate, HAIN — HAR, INDIVIDUAL, page, mein, SEPARATELY, check, likhne, ki, ZAROORAT, nahi.
// app/dashboard/layout.js:
export default async function DashboardLayout({ children }) {
const session = await auth();
if (!session) redirect("/login");
return <div>{children}</div>;
}Auth, check, ke, DAURAN, EK, loading.js, file, se, EK, LOADING, state, DIKHAYA, ja, sakta hai — SUSPENSE, boundary, ke, ANDAR, session, verify, hone, ka, WAIT, karte, hue.