Next.js এ Authentication কিভাবে কাজ করে?

ওয়েব অ্যাপ বানাতে গেলে সবচেয়ে গুরুত্বপূর্ণ সিকিউরিটি লেয়ারগুলোর একটা হলো Authentication — অর্থাৎ, ইউজার আসলেই কে সেটা যাচাই করা।
Next.js এ এই সিস্টেমটা অনেক সহজে করা যায় thanks to NextAuth.js বা JWT (JSON Web Token) সাপোর্টের জন্য।
চলো ধাপে ধাপে দেখি 👇
🧩 1️⃣ Authentication — “তুমি কে?”
Authentication মানে হলো ইউজার আসলেই সেই ব্যক্তি কি না সেটা যাচাই করা।
Next.js এ আমরা সাধারণত NextAuth.js ব্যবহার করি।
👉 Example:
- ইউজার
usernameএবংpasswordদিয়ে লগইন করে। - সার্ভার ডাটাবেজে যাচাই করে দেখে — এই ইউজার আছে কি না।
- ঠিক থাকলে, সার্ভার একটা JWT Token বা Session Cookie তৈরি করে।
🔒 2️⃣ Session Management — “তুমি এখনো লগইন আছো তো?”
লগইন করার পর ইউজার বারবার লগইন না করে যেন পেজ ঘুরে দেখতে পারে, এজন্য সেশন ব্যবহার করা হয়।
NextAuth এটাকে নিজেরা হ্যান্ডেল করে —
🟢 next-auth.session-token নামে একটা সিকিউর কুকি সেট করে দেয়,
যেটা দিয়ে Next.js জানে ইউজার এখনো অথেন্টিকেটেড আছে।
🔐 3️⃣ Authorization — “তুমি কী দেখতে পারবে?”
Authentication জানায় “তুমি কে”,
আর Authorization জানায় “তুমি কী করতে পারবে।”
ধরা যাক তোমার ERP সিস্টেমে —
- Admin সব রিপোর্ট দেখতে পারবে
- Manager শুধু টিম রিপোর্ট
- Operator শুধু নিজের রিপোর্ট
এই Role-Based Access Control (RBAC) করা যায় Middleware বা getServerSession() ব্যবহার করে।
🧠 Example Middleware (Route Protection)
import { getToken } from “next-auth/jwt”
import { NextResponse } from “next/server”
export async function middleware(req) {
const token = await getToken({ req })
const url = req.nextUrl
if (!token && url.pathname.startsWith(“/admin”)) {
return NextResponse.redirect(new URL(“/login”, req.url))
}
return NextResponse.next()
}
এই কোডটা /admin route কে প্রোটেক্ট করবে।
লগইন না থাকলে ইউজারকে /login এ রিডাইরেক্ট করবে।
✅ Use NextAuth (JWT strategy)
✅ Store user roles in DB
✅ Protect routes with middleware