22-4 Redirection vers page de connexion
Dans le cas où l'utilisateur n'a pas accès, on veut évidemment rediriger vers une page de connexion.
Créer une page de connexion
Dans une fenêtre de terminal, créez une nouvelle composante de page pour la connexion.
ng g component features/connexion/pages/connexion
Ajouter une route vers la page de connexion
On associera le chemin /connexion
vers la nouvelle page. Sans toutefois protéger cette page par le guard
puisqu'elle doit être active en tout temps!
//...
{
path: 'projets/:id/modifier',
component: ProjetEdition
},
{
path: 'connexion',
component: Connexion
}
];
Configurer la redirection
Dans le cas où l'utilisateur n'est pas "authentifié", redirigeons-le vers la page de connexion.
Pour rediriger vers la connexion, à partir de la fonction de guard
, il faudra utiliser le Router
. Cependant, on ne peut pas injecter le Router
comme dans les composantes puisque authGuard()
n'est qu'une fonction!
- Utilisation de
inject()
pour injecter une instance. Pour injecter une instance d'une classe injectable à l'intérieur d'une fonction, on peut utiliser la fonctioninject
.
export const authGuard: CanActivateFn = (route, state) => {
const router = inject(Router);
const pseudo = localStorage.getItem('pseudo');
if(pseudo){
return true;
}
return false;
};
- Rediriger à l'aide du router.
export const authGuard: CanActivateFn = (route, state) => {
const router = inject(Router);
const pseudo = localStorage.getItem('pseudo');
if(pseudo){
return true;
}
return router.navigate(['connexion']);
};
Test
Supprimez manuellement la clé pseudo
dans le stockage local de votre navigateur, essayez de rafraichir la page d'accueil et vous serez redirigé vers la page de connexion!
