Проверяет понимание организации ролевого доступа в Express-приложениях и умение защищать маршруты по ролям пользователя.
Role-Based Access Control (RBAC) — это модель авторизации, при которой права доступа определяются ролью пользователя (admin, user, manager и т.д.). В Express удобнее всего реализовать её через цепочку middleware: сначала аутентификация (кто ты), затем авторизация (что тебе можно).
После логина сервер выдаёт JWT, в payload которого лежит роль. На защищённых маршрутах middleware читает токен, кладёт пользователя в req.user, а затем отдельный middleware проверяет, входит ли роль в список разрешённых.
const jwt = require('jsonwebtoken');
function authenticate(req, res, next) {
const token = req.headers.authorization?.split(' ')[1];
if (!token) return res.status(401).json({ error: 'No token' });
try {
req.user = jwt.verify(token, process.env.JWT_SECRET);
next();
} catch {
res.status(401).json({ error: 'Invalid token' });
}
}
function authorize(...roles) {
return (req, res, next) => {
if (!roles.includes(req.user.role)) {
return res.status(403).json({ error: 'Forbidden' });
}
next();
};
}
module.exports = { authenticate, authorize };const router = require('express').Router();
const { authenticate, authorize } = require('./auth');
router.get('/profile', authenticate, (req, res) => {
res.json(req.user);
});
router.delete('/users/:id',
authenticate,
authorize('admin'),
deleteUserHandler
);
router.get('/reports',
authenticate,
authorize('admin', 'manager'),
reportsHandler
);casl, accesscontrol.Итог: RBAC через middleware — простой и расширяемый способ защитить API. Применяйте его, когда роли фиксированы и права зависят от типа пользователя, а не от конкретных ресурсов.
Уровень
Рейтинг:
5
Сложность:
5
Навыки
Node.js
Express
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию