#angularjs #authentication #admin
#angularjs #аутентификация #администратор
Вопрос:
У меня есть несколько компонентов на моем «веб-сайте магазина». Есть один компонент, который должен быть доступен только для администратора. В локальном хранилище есть токен isAdmin. Теперь я реализовал, что специальный компонент отображается только на домашнем сайте, когда администратор входит в систему. Но идентификатор, который вы вводите, указывает на ссылку этого компонента (http://localhost:4200/Authorize ) это показывает всем. Как я могу реализовать, что он должен быть доступен только для администраторов.
Ответ №1:
Вы должны использовать canActivate в определении маршрутов.
@NgModule({
imports: [
RouterModule.forRoot([
{
path: 'team/:id',
component: TeamComponent,
canActivate: [AuthGuard]
}
])
],
})
Вы можете создавать пользовательские условия как AuthGuard:
@Injectable()
export class AuthGuard implements CanActivate {
constructor(
) {}
canActivate() {
if (somthing) {
return true;
} else {
this.router.navigate(['/login']);
return false;
}
}
Проверьте документацию https://angular.io/api/router/CanActivate