Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

281
Vistas
Verifique las afirmaciones de roles y muestre los elementos si es verdadero

Estoy escribiendo una aplicación con angular en el frente + asp.net en el backend. Tengo 2 roles: usuario y administrador. Hay algunos botones en mi barra de navegación que quiero ocultar del rol de usuario. Mi función para verificar si el rol de usuario registrado actualmente es administrador:

 public isUserAdmin = (): boolean => { var token = localStorage.getItem("token"); const decodedToken = this._jwtHelper.decodeToken(token!); const role = decodedToken['http://schemas.microsoft.com/ws/2008/06/identity/claims/role'] return role === 'Admin'; }

El código anterior está probado y funciona, actualmente lo estoy usando para guardia.

Mi barra de navegación html:

 <li class="nav-item"> <a class="nav-link" *ngIf="isUserAdmin" routerLink="manufacturers">Manufacturers</a> </li>

barra de navegación.ts:

 export class HeaderComponent implements OnInit { public isUserAdmin: boolean = false; ... constructor(private userService: UserService, private _router: Router) { this.userService.adminChanged .subscribe(res => this.isUserAdmin = res); }

Para obtener el trabajo de código anterior de navbar.ts, modifiqué userService:

 export class UserService { private _adminChangeSub = new ReplaySubject<boolean>(1); public adminChanged = this._adminChangeSub.asObservable(); constructor(private _http: HttpClient, private _envUrl: EnvironmentUrlService, private _jwtHelper: JwtHelperService) { } public isUserAdmin = (): boolean => { var token = localStorage.getItem("token"); const decodedToken = this._jwtHelper.decodeToken(token!); const role = decodedToken['http://schemas.microsoft.com/ws/2008/06/identity/claims/role'] this._adminChangeSub.next(true); return role === 'Admin'; }

Pero simplemente no funciona. El elemento en la barra de navegación todavía está aquí incluso si inicio sesión en la cuenta de administrador. Además, cuando trato de console.log (this.isUserAdmin) en el constructor justo después de suscribirlo, devuelve falso. ¿Cómo puedo ocultar botones de la barra de navegación cuando el usuario no es administrador?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No hay necesidad de observables, suscripciones todo este arsenal. Simplemente usa esto:

 <li class="nav-item"> <a class="nav-link" *ngIf="userService.isUserAdmin" routerLink="manufacturers">Manufacturers</a> </li>

Y convertirlo en un captador en el servicio:

 get isUserAdmin(): boolean => { var token = localStorage.getItem("token"); const decodedToken = this._jwtHelper?.decodeToken(token!) || {}; const role = decodedToken['http://schemas.microsoft.com/ws/2008/06/identity/claims/role'] return role === 'Admin'; }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda