Nell'applicazione angolare si possono fare queste cose: 1 - Assicurarsi che AuthGuard restituisce false se l'utente non è autorizzato ad accedere a determinati componenti. 2 - Nasconde le voci di menu che l'utente non dovrebbe vedere.
Ricordare che l'autorizzazione reale applicata sul server termina, in angular2 si tratta solo di livello di presentazione.
Ecco l'un possibile approccio:
Si aggiunge un'attestazione personalizzata a un token JWT. Può essere qualcosa di simile:
{ "utente": "JohnDoe", "ruoli": [ "admin", "manager", "qualunque"] }
Nell'applicazione angolare , crei AuthService, in cui decodificare il token JWT e archiviare il reclamo estratto nella variabile e nel localStorage
È possibile creare un navigationService che memorizzerà i dati sul menu e sui ruoli richiesti per accedere a un particolare componente nell'oggetto o array. Può essere qualcosa di simile (pseudocodice):
const menuItems = [
{
"name":"Dashboard",
"routerLink":"/dashboard",
"rolesRequired":["user"]
},
{
"name":"ControlPanel",
"routerLink":"/cp",
"rolesRequired":["admin"]
},
.....
constructor(private authService:AuthService){}
getMenu(){
return this.menuItems.filter(
element => {
return
this.authService.user.role.haveElement(element.rolesRequired)
}
}
Nella componente menu è possibile utilizzare il servizio di navigazione per retrive l'elenco dei permessi voci del menu.
È possibile utilizzare lo stesso navigationService in AuthGuard.
fonte
2017-07-10 14:26:24
Questa non hanno nulla a che fare con RBAC che è un approccio per la gestione dell'autorizzazione e su quale OP sta chiedendo informazioni. L'autenticazione è un'altra cosa. Giù votare da qui. –