C. Missing status code when sending 'Access denied'
D. req.user.role check is incorrect syntax
Solution
Step 1: Check middleware response
When denying access, middleware sends a message but does not set HTTP status code.
Step 2: Importance of status code
Without status 403, client gets status 200 which is misleading for access denial.
Final Answer:
Missing status code when sending 'Access denied' -> Option C
Quick Check:
Send 403 on denial = C [OK]
Hint: Always send status code with error messages [OK]
Common Mistakes:
Not setting status code on error
Calling next() after sending response
Placing middleware after route handler
5. You want to protect two routes: '/admin' for admins only and '/profile' for logged-in users. Which Express setup correctly applies middleware for this scenario?
function authMiddleware(req, res, next) {
if (req.user) next();
else res.status(401).send('Login required');
}
function adminMiddleware(req, res, next) {
if (req.user?.role === 'admin') next();
else res.status(403).send('Admin only');
}
// Which setup is correct?