JWT (JSON Web Token) — stateless authentication using signed tokens.
Implementation:
1const jwt = require("jsonwebtoken");2const SECRET = process.env.JWT_SECRET;34// Generate token on login5function generateToken(user) {6 return jwt.sign(7 { id: user.id, role: user.role },8 SECRET,9 { expiresIn: "24h" }10 );11}1213// Middleware to verify token14function authMiddleware(req, res, next) {15 const token = req.headers.authorization?.split(" ")[1];16 if (!token) return res.status(401).json({ error: "No token" });1718 try {19 const decoded = jwt.verify(token, SECRET);20 req.user = decoded;21 next();22 } catch (err) {23 res.status(401).json({ error: "Invalid token" });24 }25}2627app.post("/login", async (req, res) => {28 const user = await authenticateUser(req.body);29 if (!user) return res.status(401).json({ error: "Bad credentials" });30 const token = generateToken(user);31 res.json({ token });32});3334app.get("/protected", authMiddleware, (req, res) => {35 res.json({ message: "Hello " + req.user.id });36});
Security tips: