Отключить секьюрити на некоторых роутах Angular
использую кейклок с ангуляром, как повесить авторизацию пользователей именно на определённые роуты, например ('http://localhost:4200/auth/). А вот на эти роуты можно было бы заходить без регистрации ('http://localhost:4200', 'http://localhost:4200/'). Буду благодарен любой помощи.
добавил это не помогло:
const routes: Routes = [
{path: "auth/orderPanel", component: OrderPanelComponent, canActivate: [NoProjectGuard]},
{path: "", component: MainComponent}
];
@NgModule({
imports: [
RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })
],
exports: [RouterModule],
providers: [NoProjectGuard]
})
export class AppRoutingModule {
}];
Ответы (1 шт):
Автор решения: Alexander Chernin
→ Ссылка
Надо добавить охранника (Guard) на соответствующий рут. Общая схема такая:
const routes: Routes = [
{
path: 'auth', //<- куда
component: AuthComponent,
canActivate: [AuthGuard] //<- охранник
}
...
];
Охранник выглядит так:
@Injectable({
providedIn: 'root'
})
export class AuthGuard implements CanActivate {
canActivate(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
return <возврат результата проверки>;
}
}
Более подробно тут