Вы должны создать RoleGuardService, который ожидает роль от пользователя и проверяет, равна ли эта роль ожидаемой роли, например:
constructor(public auth: AuthService, public router: Router) {}
canActivate(route: ActivatedRouteSnapshot): boolean {
// this will be passed from the route config
// on the data property
const expectedRole = route.data.expectedRole;
const token = localStorage.getItem('token');
// decode the token to get its payload
const tokenPayload = decode(token);
if (
!this.auth.isAuthenticated() ||
tokenPayload.role !== expectedRole
) {
this.router.navigate(['login']);
return false;
}
return true;
}
И защищает вашу маршрутизацию с помощью пользовательских ролей, например:
{
path: 'admin',
component: AdminComponent,
canActivate: [RoleGuard],
data: {
expectedRole: 'admin'
}
},
В этом сценарии предполагается, что вы используете пользовательскую заявку на роль в своем JWT, для получения дополнительной информации я советую вам прочитать эту статью, в которой подробно объясняется ваш ответ: https://medium.com/@ryanchenkie_40935/angular-authentication-using-route-guards-bf7a4ca13ae3