workshop_authGuard
workshop_authGuard
workshop_authGuard
Workshop d’authentification :
Guard dans un projet angular
Objectifs :
• Sécuriser l’accès à l’application en utilisant json web token (jwt)
• Créer un formulaire d’authentification
• Appliquer les différentes notions déjà vue dans le cours
Travail demandé :
1. Dans votre projet angular, installez-le package suivant pour gérer l’authentification
avec json web token (jwt)
singin(data:any):Observable<User>{
return this.http.post<User>('http://localhost:3000/signin',data);
}
10. Ajoutez le code source suivant dans la classe de composant loginComponent
constructor(private authService: AuthentificationService){
login(d:any): void {
this.authService.singin(d).subscribe(
(response) => {
// Stockez le jeton JWT dans le stockage local
localStorage.setItem('access_token', response.accessToken);
localStorage.setItem('role', response.role);
}
);
}
14. Nous allons ajouter l’obligation de l’authentification, pour cela lancez la commande
suivante pour générer un guard « ng generate guard authentification » et choisissez
la méthode canActivate()
15. Appelez la méthode is_logged() dans la méthode canActivate() dans le fichier
authentification.guard.ts
constructor(private authService: AuthentificationService) {
}
canActivate(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean
| UrlTree> | boolean | UrlTree {
if (this.authService._is_logged() ) {
return true
}
return false;
}
16. Ajouter le canActivate aux routes nécessitantes une authentification comme montre la
figure suivante.
{ path: 'dashboard', component: DashboardComponent, canActivate:
[AuthentificationGuard]}
17. Nous allons attribuer un rôle pour accéder à la page "dashboard" et mettre en place la
méthode "getRole(role: String)" dans le service AuthentificationService pour
vérifier le rôle de l'utilisateur.
getRole(role:String) {
this.roleAs = localStorage.getItem('role');
if(this.roleAs==role)
return true;
return false
}