Day 82 JWT Tokens
JWT (JSON Web Token) stateless authentication ka standard hai. Server koi session store nahi karta — har request ke saath token bhejo, server verify karta hai. Modern APIs mein JWT standard hai.
JWT Structure & Usage
JWT create aur verify karo.
// npm install jsonwebtoken
const jwt = require("jsonwebtoken");
const SECRET = process.env.JWT_SECRET; // strong random string
// Token generate karo (login par)
function generateTokens(userId) {
const accessToken = jwt.sign(
{ userId, type: "access" },
SECRET,
{ expiresIn: "15m" } // short lived
);
const refreshToken = jwt.sign(
{ userId, type: "refresh" },
SECRET,
{ expiresIn: "7d" } // long lived
);
return { accessToken, refreshToken };
}
// Token verify karo
function verifyToken(token) {
try {
return jwt.verify(token, SECRET);
} catch (err) {
if (err.name === "TokenExpiredError") {
throw new Error("Token expired — please refresh");
}
throw new Error("Invalid token");
}
}
// Auth middleware
function protect(req, res, next) {
const token = req.headers.authorization?.split(" ")[1];
if (!token) return res.status(401).json({ error: "No token" });
try {
req.user = verifyToken(token);
next();
} catch (err) {
res.status(401).json({ error: err.message });
}
}
🎯 Practice Challenge
Access + Refresh token system banao. Access token 15 min, Refresh token 7 days. Token refresh endpoint banao.