
Авторизація та RBAC
Контроль доступу на основі ролей, кастомні guard, декоратори, дозволи, власність ресурсів
1Що таке RBAC (Role-Based Access Control)?
Що таке RBAC (Role-Based Access Control)?
Відповідь
RBAC — це система контролю доступу, яка надає дозволи користувачам на основі їхніх ролей. Замість того, щоб керувати дозволами окремо для кожного користувача, RBAC групує дозволи в ролі (наприклад, ADMIN, USER, MANAGER) і призначає ці ролі користувачам. Це спрощує керування доступом у застосунках і особливо корисне в NestJS з кастомними guard та декораторами метаданих.
2Яка різниця між автентифікацією та авторизацією?
Яка різниця між автентифікацією та авторизацією?
Відповідь
Автентифікація перевіряє особу користувача (хто ви?), зазвичай через логін/пароль або JWT-токен. Авторизація перевіряє дозволи користувача (що ви можете робити?), контролюючи доступ до ресурсів на основі ролей або дозволів. У NestJS автентифікація часто використовує JwtAuthGuard, тоді як авторизація використовує кастомні guard, як-от RolesGuard, для перевірки прав доступу.
3Який декоратор NestJS дозволяє створити кастомний guard?
Який декоратор NestJS дозволяє створити кастомний guard?
Відповідь
Щоб створити кастомний guard у NestJS, потрібно створити клас, позначений @Injectable(), який реалізує інтерфейс CanActivate. Цей інтерфейс вимагає методу canActivate(context: ExecutionContext), що повертає boolean або Promise. Потім guard можна застосувати до маршрутів за допомогою @UseGuards(). Ця архітектура дозволяє інжектувати залежності (сервіси, репозиторії) у guard для виконання складних перевірок.
Що в RBAC означає 'дозвіл' (permission)?
Як прикріпити guard до контролера в NestJS?
+17 питань зі співбесід
Інші теми співбесід Node.js / NestJS
Основи Node.js
Основні API Node.js
Асинхронне програмування
Основи Express.js
Основи NestJS
Проєктування REST API
Валідація та DTO
Документація API та контракти
Обробка помилок
Юніт-тестування
Планування завдань
Модулі та DI у NestJS
Конфігурація та керування середовищами
Автентифікація JWT
База даних з TypeORM
Prisma ORM
Middleware та Interceptors
Завантаження файлів
WebSockets
GraphQL з NestJS
Наскрізне тестування (End-to-End)
Кешування з Redis
Черги з Bull
DevOps, Logging та CI/CD
Docker та контейнеризація
Мікросервіси
Найкращі практики безпеки
Продуктивність і хмарне розгортання
Опануй Node.js / NestJS для наступної співбесіди
Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.
Почни безкоштовно