Performance: Permission middleware
MEDIUM IMPACT
This affects server response time and user interaction speed by controlling access before processing requests.
app.use(async (req, res, next) => { try { const user = await getUserFromDbAsync(req.userId); if (!user || !user.hasPermission) { return res.status(403).send('Forbidden'); } next(); } catch (err) { next(err); } });
app.use((req, res, next) => {
// Synchronous heavy permission check
const user = getUserFromDbSync(req.userId);
if (!user || !user.hasPermission) {
return res.status(403).send('Forbidden');
}
next();
});| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Synchronous permission check | N/A (server-side) | N/A | N/A | [X] Bad |
| Asynchronous permission check | N/A (server-side) | N/A | N/A | [OK] Good |
| Global middleware on all routes | N/A (server-side) | N/A | N/A | [X] Bad |
| Middleware applied only on protected routes | N/A (server-side) | N/A | N/A | [OK] Good |