
Autorizzazione e RBAC
Controllo degli accessi basato sui ruoli, guard personalizzati, decoratori, permessi, proprietà delle risorse
1Cos'è RBAC (Role-Based Access Control)?
Cos'è RBAC (Role-Based Access Control)?
Risposta
RBAC è un sistema di controllo degli accessi che concede permessi agli utenti in base ai loro ruoli. Invece di gestire i permessi individualmente per ogni utente, RBAC raggruppa i permessi in ruoli (es: ADMIN, USER, MANAGER) e assegna questi ruoli agli utenti. Questo semplifica la gestione degli accessi nelle applicazioni, particolarmente utile in NestJS con guard personalizzati e decoratori di metadati.
2Qual è la differenza tra autenticazione e autorizzazione?
Qual è la differenza tra autenticazione e autorizzazione?
Risposta
L'autenticazione verifica l'identità dell'utente (chi sei?), tipicamente tramite login/password o token JWT. L'autorizzazione verifica i permessi dell'utente (cosa puoi fare?), controllando l'accesso alle risorse in base a ruoli o permessi. In NestJS, l'autenticazione usa spesso un JwtAuthGuard, mentre l'autorizzazione usa guard personalizzati come RolesGuard per verificare i diritti di accesso.
3Quale decoratore NestJS permette di creare un guard personalizzato?
Quale decoratore NestJS permette di creare un guard personalizzato?
Risposta
Per creare un guard personalizzato in NestJS, occorre creare una classe decorata con @Injectable() che implementa l'interfaccia CanActivate. Questa interfaccia richiede il metodo canActivate(context: ExecutionContext) che restituisce un boolean o una Promise. Il guard può poi essere applicato alle rotte con @UseGuards(). Questa architettura consente di iniettare dipendenze (servizi, repository) nel guard per eseguire validazioni complesse.
In RBAC, cosa rappresenta un 'permesso'?
Come si associa un guard a un controller in NestJS?
+17 domande da colloquio
Altri argomenti di colloquio Node.js / NestJS
Fondamenti di Node.js
API Core di Node.js
Programmazione asincrona
Fondamenti di Express.js
Fondamenti di NestJS
Progettazione di API REST
Validazione e DTO
Documentazione API e contratti
Gestione degli errori
Test unitari
Pianificazione delle attività
Moduli e DI di NestJS
Configurazione e gestione degli ambienti
Autenticazione JWT
Database con TypeORM
Prisma ORM
Middleware e Interceptor
Caricamento file
WebSockets
GraphQL con NestJS
Test end-to-end
Caching con Redis
Code con Bull
DevOps, Logging e CI/CD
Docker e containerizzazione
Microservices
Migliori pratiche di sicurezza
Performance e deployment cloud
Padroneggia Node.js / NestJS per il tuo prossimo colloquio
Accedi a tutte le domande, flashcards, test tecnici, esercizi di code review e simulatori di colloquio.
Inizia gratis